public class TestClass
{
public int Num { get; set; }
public string Name { get; set; }
}
IEnumerable<TestClass> originalEnumerable
= Enumerable.Range(1, 1).
Select(x => new TestClass() { Num = x, Name = x.ToString() });
List<TestClass> listFromEnumerable = originalEnumerable.ToList();
// false
bool test = ReferenceEquals(listFromEnumerable[0], originalEnumerable.ElementAt(0));
如果我修改複製的對象,原件不會改變。爲什麼IEnumerable.ToList會產生新的對象
我明白,System.Linq.IEnumerable<T>
集合總是會產生新的對象,即使它們是調用ToList()
/ToArray()
時的參考類型?我是否錯過了其他SO問題,只有引用被複制。
如果你已經安裝了ReSharper的,它甚至會強調方法枚舉IEnumerable和告訴你關於這個,這非常方便。在討厭的情況下,多次(不必要的)枚舉可能花費很多時間。 –