执行此操作时出现奇怪的错误:(.net 2.0)
public overrides List<String> getSpaceballs
{
get { return new List<String>() { "abc","def","egh" }; }
}
VS 在 ()
之后请求 ;
。为什么?
我当然可以做到:
public overrides string[] getSpaceballs
{
get { return new string[] { "abc","def","egh" }; }
}
最佳答案
C# 的 collection initialization syntax仅在版本 3 及更高版本中受支持(既然你提到了 .NET 2.0,我假设你也在使用 C# 2)。这可能有点令人困惑,因为 C# 一直支持类似的数组初始化语法,但实际上并不是一回事。
集合初始化器是一种编译器技巧,它允许您在一个语句中创建和初始化一个集合,如下所示:
var list = new List<String> { "foo", "bar" };
但是这个语句被编译器翻译成这样:
List<String> <>g__initLocal0 = new List<String>();
<>g__initLocal0.Add("foo");
<>g__initLocal0.Add("bar");
List<String> list = <>g__initLocal0;
如您所见,此功能是一种语法糖,可将模式简化为单个表达式。
关于c# - 初始化内联列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020407/