以下のようにC#で配列のサイズを変更しようとしていますが、
Array.Resize(ref Globals.NameList, 0);
以下のエラーが表示されます
A property or indexer may not be passed as an out or ref parameter
グローバルはオブジェクトです。NameList は、Globals クラスで宣言された文字列型の配列です。
正しいコードを投稿して、これを修正するのを手伝ってください。
ありがとう!
以下のようにC#で配列のサイズを変更しようとしていますが、
Array.Resize(ref Globals.NameList, 0);
以下のエラーが表示されます
A property or indexer may not be passed as an out or ref parameter
グローバルはオブジェクトです。NameList は、Globals クラスで宣言された文字列型の配列です。
正しいコードを投稿して、これを修正するのを手伝ってください。
ありがとう!
変数を使用しますが、プロパティは使用しません
var obj = Globals.NameList;
Array.Resize(ref obj , 0);
Globals.NameList=obj;
コンパイラ エラーはそれ自体を物語っています。参照によってプロパティを渡すことはできません。変数のみ。
C# 仕様セクション 10.6.1.2 から:
仮パラメーターが参照パラメーターの場合、メソッド呼び出しの対応する引数は、キーワードと
refそれに続く仮パラメーターと同じ型の変数参照(セクション 5.3.3) で構成される必要があります。
プロパティ アクセス式はvariable-referenceとしてカウントされません。
あなたはおそらく欲しい:
var tmp = Globals.NameList;
Array.Reize(ref tmp, 0);
Globals.NameList = tmp;
VBでは参照によるプロパティの受け渡しが許可されていますが、上記のように動作することに注意してください。特に、メソッド内の各割り当ては、関連するセッターへの呼び出しではなく、一時的な値にのみ影響します。
Globalsまた、変更可能なパブリック プロパティで呼び出されるクラスを持つことは、デザインの匂いがすることに注意してください...
行う
Array arr = Globals.NameList;
Array.Resize(ref arr, 0);
Globals.NameList = arr;