c# - 初始化内联列表

标签 c#

执行此操作时出现奇怪的错误:(.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/

相关文章:

c# - 删除 linq select 中的字段名称

c# - JObject - 动态添加新对象

c# - 在 asp.net 中缓存用户数据的最佳做法是什么

c# - LINQ - 尝试使用 Include、自定义函数并返回自定义类型。包含不起作用

c# - 在静态方法中管理一次性对象

c# - 如何检查 net.tcp WCF 服务的可用性

c# - Server.TransferRequest() 和 http 状态码

c# - 数据绑定(bind)到嵌套属性?

c# - 从 Log4Net 日志文件创建 zip 会导致 System.IO.IOException

c# - 循环访问 IQueryable 的属性