Can I initialize a BCL immutable collection using braces?(我可以使用大括号初始化BCL不可变集合吗?)
问题描述
在过去,我们可以方便地使用大括号初始化可变集合,如下例所示:
var myDictionary = new Dictionary<string, decimal> {{"hello", 0m}, {"world", 1m}};
是否有类似的语法可用于BCL不可变集合?我知道这仍然是一个预发行版,但可能有推荐的语法,或者至少这个问题将作为反馈来实现这些方便的初始化器。
同时,我找到的最短时间如下:
var myDictionary = new Dictionary<string, decimal> {{"hello", 0m}, {"world", 1m}}.ToImmutableDictionary();
推荐答案
是否有类似的语法可用于BCL不可变集合?
据我所知并非如此--不幸的是,对象和集合初始值设定项都依赖于可变性。在这方面,令人遗憾的是,该语言没有设计成如果有一个带有返回值的Add
方法,该方法可以用作中间值。(请注意,这无助于在对象初始值设定项中设置属性,我更喜欢名称Plus
而不是Add
,以使语义更清晰。)
我认为您已经使用的方法是最适合捷径的方法。
ImmutableList
稍微简单一点:
var list = ImmutableList.Create(1, 2, 3);
它相当简单(并允许类型推理),但我不知道有任何类似的ImmutableDictionary
。有一个重载的Create
,它接受一个IEnumerable<TKey, TValue>
,但是构造任何实现都可能像构造可变字典一样麻烦,就像您已经在做的那样。
这篇关于我可以使用大括号初始化BCL不可变集合吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:我可以使用大括号初始化BCL不可变集合吗?


- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 输入按键事件处理程序 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 如何用自己压缩一个 IEnumerable 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01