配列サブスクリプション演算子を使用してすべてのオブジェクトを反復処理し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;
}
このコードは、呼ばれるリストのすべてのメンバーにアクセスし、それらのpublic フィールドをdomEvents
変更し、参照を別のリスト ( と呼ばれる)にも格納することになっています。xpath
retVal
この関数を呼び出して、フィールドが null に設定されているオブジェクトList
の を渡します。奇妙なことに、関数が戻った後、返されたオブジェクトのフィールドは変更されていますが、この関数にパラメーターとして渡された元のリストは変更されていません。つまり、元のリストのオブジェクトのフィールドはまだnull に設定されています。JavaScriptEventM
xpath
retVal
xpath
domEvents
xpath
の配列サブスクリプション演算子を介してアクセスすると、C#は実際にオブジェクトのクローンを取得しますList
か?List
のすべての要素に1 つずつアクセスして変更するにはどうすればよいですか?