gpt4 book ai didi

c# - 我可以使用大括号初始化 BCL 不可变集合吗?

转载 作者:太空狗 更新时间:2023-10-29 23:00:11 25 4
gpt4 key购买 nike

在过去,我们可以使用大括号方便地初始化可变集合,如下例所示:

var myDictionary = new Dictionary<string, decimal> {{"hello", 0m}, {"world", 1m}};

是否有类似的语法可用于 BCL 不可变集合?我知道它仍然是一个预发布版本,但也许有推荐的语法,或者至少这个问题将作为实现这些方便的初始化器的反馈。

同时,我发现最短的如下:

var myDictionary = new Dictionary<string, decimal> {{"hello", 0m}, {"world", 1m}}.ToImmutableDictionary();

最佳答案

Is there a similar syntax that can be used with BCL immutable collections?

据我所知还不是 - 不幸的是,对象和集合初始值设定项都依赖可变性。在这方面,遗憾的是语言的设计不是这样的,如果有 Add具有返回值的方法,可以用作中间值。 (请注意,这对在对象初始值设定项中设置属性没有帮助,我更喜​​欢名称 Plus 而不是 Add 以使语义更清晰。)

我认为您已经在使用的方法是最适合快捷方式的方法。

对于 ImmutableList它稍微简单一些:

var list = ImmutableList.Create(1, 2, 3);

相当简单(并且允许类型推断)但我不知道 ImmutableDictionary 有什么类似的东西. Create 过载这需要 IEnumerable<TKey, TValue> ,但构建任何实现都可能像您已经在构建可变字典一样繁琐。

关于c# - 我可以使用大括号初始化 BCL 不可变集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882136/

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