配列サブスクリプション演算子を持つList
のすべてのオブジェクトを繰り返し処理し、そのフィールドを変更して別のリストに格納しようとしています。ここで私が書いたコードは次のとおりです。は、厳密な型の総称リストにあるオブジェクトを変更できません
private List<JavaScriptEventM> getSubset(List<JavaScriptEventM> domEvents)
{
List<JavaScriptEventM> retVal = new List<JavaScriptEventM>();
for (int i = 0; i < domEvents.Count; i++)
{
JavaScriptEventM e = domEvents[i];
e.xpath = getXPathToNode(e.source , false);
retVal.Add(e);
}
return retVal;
}
このコードはdomEvents
と呼ばれるリストのすべてのメンバーにアクセスし、そのxpath
パブリックフィールドを変更して、別のリストでも参照を格納することになっている(retVal
と呼ばれる)
私はこの関数を呼び出し、xpath
フィールドがnullに設定されたのJavaScriptEventM
オブジェクトを渡します。不思議なことに、関数が返された後にretVal
で返されたオブジェクトはxpath
フィールドを変更しましたが、元のdomEvents
リストはこの関数のパラメータとして渡されました。すなわち、元のリスト内のオブジェクトは、まだxpath
フィールドがヌルに設定されています。
List
の配列サブスクリプション演算子を使用してオブジェクトにアクセスすると、実際にオブジェクトのクローンが取得されますか? List
のすべての要素に1つずつアクセスして変更するにはどうすればよいですか?
'JavaScriptEventM'は' struct'ですか? – Aliostad
'ref'を渡すとどうなりますか? – mattytommo
はい、実際は構造体です。何か違いはありますか? –