在C#中,当我将新列表设置为等于另一个列表时,是否将新列表设置为指向其他列表的指针,还是实际创建新列表?

Ale*_*dru 6 c# pointers list object

当我将新列表设置为等于另一个列表时,是否将新列表设置为指向另一个列表的指针,还是实际创建新列表?

例如,

是...

List<SomeType> newList = oldList;
Run Code Online (Sandbox Code Playgroud)

......和......一样

List<SomeType> newList = new List<SomeType>();
newList.AddRange(oldList);
Run Code Online (Sandbox Code Playgroud)

(oldList也是SomeType的列表)?

The*_*kis 10

将有一个List和多个引用它.这适用于所有引用类型(类).

另一方面,值类型(结构)在分配时被复制.

  • @Alexandru要以编程方式确定它,有"Type.IsStruct".要在编写代码时确定它,请在IDE中查找提示(例如,对于结构,VS有一个不同的IntelliSense图标,据我记得).如果由于任何原因无法做到这一点,请检查您当时正在使用的库的文档. (2认同)

Wik*_*hla 5

赋值运算符不是克隆运算符.在引用类型的情况下,它复制引用的值.