gpt4 book ai didi

C#新操作bug?

转载 作者:太空狗 更新时间:2023-10-29 22:07:54 24 4
gpt4 key购买 nike

public class ListTest
{
public List<int> MyList;
public ListTest()
{
MyList = new List<int> { 1, 2, 3 };
}
}

var listTest = new ListTest()
{
MyList = {4,5,6}
};

你知道listTest.MyList的值吗?

它将是 {1,2,3,4,5,6}

enter image description

谁能解释一下??

最佳答案

这不是错误,而是 { ... } 初始化语法在 C# 中的工作方式的结果。

该语法适用于任何具有 Add() 方法的集合类型。它所做的只是用对 Add() 方法的调用序列替换大括号中的序列。

在您的示例中,您首先在构造函数中使用前三个元素初始化值。然后,稍后当您将 { 4, 5, 6 } 分配给该属性时,它会使用这些值再次调用 Add()

如果要清除之前的内容,需要用new操作符赋值,像这样:

var listTest = new ListTest()
{
MyList = new List<int> {4,5,6}
};

通过包含 new 运算符,您将获得一个全新的对象以及 Add() 值。

关于C#新操作bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com