ToList() は新しいリストを作成しますか?
C# では、ToList() メソッドは、オリジナルコレクション。ただし、参照の新しいリストを作成するのか、要素のコピーを作成するのかという疑問が生じます。
次の例を考えてみましょう。
public class MyObject { public int SimpleInt { get; set; } } public void RunChangeList() { var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } }; var whatInt = ChangeToList(objs); } public int ChangeToList(List<MyObject> objects) { var objectList = objects.ToList(); objectList[0].SimpleInt = 5; return objects[0].SimpleInt; }
このシナリオでは、ToList() は新しいリストを作成します。元のリストと同じオブジェクトへの参照のリスト。これは、MyObject が参照型であるためです。つまり、オブジェクトのアドレスがメモリ内に格納されます。
新しいリストで参照されるオブジェクトの SimpleInt プロパティが変更されると、変更は同じオブジェクトに反映されます。元のリスト。これは、新しいリストと元のリストの両方が同じオブジェクトを参照するためです。
MyObject がクラスではなく構造体として宣言されている場合、ToList() メソッドは、元のリストの要素のコピーを含む新しいリストを作成します。元のリスト。この場合、新しいリスト内の要素に加えられた変更は、元のリスト内の対応する要素には影響しません。
以上がC# の `ToList()` は参照の新しいリストまたは要素のコピーを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。