class Program
{
static void Main(string[] args)
{
var data = new List
for (int i = 1; i <= 5; i++)
{
data.Add(new User
{
ID = $"用户ID{i}",
Name = $"用户名{i}"
});
}
System.Diagnostics.Debug.WriteLine($"data:{JsonConvert.SerializeObject(data)}");
var data2 = data.Where(t => t.ID == "用户ID1" || t.ID == "用户ID2").ToList();
System.Diagnostics.Debug.WriteLine($"ToList-data2:{JsonConvert.SerializeObject(data2)}");
foreach (var item in data2)
{
item.ID = Guid.NewGuid().ToString();
item.Name = Guid.NewGuid().ToString();
}
System.Diagnostics.Debug.WriteLine($"ToList-data2:{JsonConvert.SerializeObject(data2)}");
System.Diagnostics.Debug.WriteLine($"data:{JsonConvert.SerializeObject(data)}");
Console.ReadLine();
}
}
//由于User是引用类型,所以新列表的元素与旧列表的元素共用一个内存地址(堆内存),更改新列表的元素,实际上也修改了旧列表元素
//反之由于T是值类型,则修改新列表的原始,旧列表则不会受影响



