この古い投稿に偶然遭遇し、私の2セントを追加することを考えました。一般的に、疑問がある場合は、任意のオブジェクトでGetHashCode()メソッドを使用してIDを確認します。したがって、上記の場合-
public class MyObject
{
public int SimpleInt { get; set; }
}
class Program
{
public static void RunChangeList()
{
var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } };
Console.WriteLine("objs: {0}", objs.GetHashCode());
Console.WriteLine("objs[0]: {0}", objs[0].GetHashCode());
var whatInt = ChangeToList(objs);
Console.WriteLine("whatInt: {0}", whatInt.GetHashCode());
}
public static int ChangeToList(List<MyObject> objects)
{
Console.WriteLine("objects: {0}", objects.GetHashCode());
Console.WriteLine("objects[0]: {0}", objects[0].GetHashCode());
var objectList = objects.ToList();
Console.WriteLine("objectList: {0}", objectList.GetHashCode());
Console.WriteLine("objectList[0]: {0}", objectList[0].GetHashCode());
objectList[0].SimpleInt = 5;
return objects[0].SimpleInt;
}
private static void Main(string[] args)
{
RunChangeList();
Console.ReadLine();
}
そして私のマシンで答える-
- オブジェクト:45653674
- objs [0]:41149443
- オブジェクト:45653674
- オブジェクト[0]:41149443
- objectList:39785641
- objectList [0]:41149443
- whatInt:5
したがって、本質的に、リストが保持するオブジェクトは上記のコードでも同じです。アプローチが役立つことを願っています。
.ToList()
、浅いコピーを作成することです。参照はコピーされますが、新しい参照は依然として元の参照が指しているのと同じインスタンスを指します。あなたはそれについて考えるとき、ToList
いずれかを作成することができないnew MyObject()
ときMyObject
であるclass
タイプは。