- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在过去,我们可以使用大括号方便地初始化可变集合,如下例所示:
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/
.NET 基类库中是否有完整构建器模式的示例?我正在寻找具有实际导演和多个具体 build 者的东西。 最佳答案 我远非这方面的专家,但我认为 DbCommandBuilder及其继承类( OdbcC
在 F# 中,您可以定义一个 first功能如下: let first (x, y) = x 你可以这样称呼它: first (1, 2) 您还可以根据 BCL Tuple 定义相同的函数类型: le
4.5 霍夫曼压缩 Syntax: outsize = Huffman_Compress(in,out,insize) outsize Size of output buffer after comp
如果我有一个类,例如 T1,我想知道它正在使用 BCL 中的哪些类,我该怎么做? 我想到了这个: T1.GetType().GetMethods().Where(x => x.DeclaringTy
在过去,我们可以使用大括号方便地初始化可变集合,如下例所示: var myDictionary = new Dictionary {{"hello", 0m}, {"world", 1m}}; 是否有
代码契约工作得很好,直到你必须为来自框架代码的结果添加无数的Contract.Assume(...)。例如,MemoryStream.ToArray() 从不返回 null 数组,正如我在 Refle
我使用 Microsoft.Bcl.Async package在一个项目中,并且该项目被另一个不使用异步功能的项目引用。 现在我在编译解决方案(或仅编译第二个项目)时收到此错误警告: The prim
好像是 System.Diagnostics.Debug , 和 System.Diagnostics.Trace 大致相同,但值得注意的异常(exception)是 Debug 用法是在发布配置中编
以下是 FSI 中的内容: > System.Math.Round(0.2916, 2);; val it : float = 0.29 > it * 100.;; val it : float =
一些 .net 理论问题:哪些库实际上是标准化的?我知道有一个通用类型系统,它指定了诸如 32 位整数和所有这些低级信息之类的东西,但我对通用语言规范和基类库的状态/关系感到困惑。 系统中有一些基本类
我需要清楚地了解类库。 Base Class Libraries 和 Framework Class Libraries 都属于命名空间——我的意思是我们可以称它们都是命名空间吗?如果不是,我们可以将
比如 Point、Size 等值类型。 我还听说 .NET 中的字符串并非真正不可变。 F# 是否使用这些或它们的替代不可变版本? 如果它使用标准的可变 BCL 类型,这不会损害 F# 在编译和运行时
有什么方法可以知道 .NET 预定义方法的确切时间复杂度。就像我想知道 的复杂性一样 String.Contains() 或 Hashtable.ContainsKey() Microsoft 是否
Microsoft.Bcl.Async 使开发人员能够在没有 .NET Framework 4.5 的情况下使用 async/await 关键字,他们应该以使用它们为目标。 太好了,这要感谢 Micr
我清楚地记得 C# 的 SSE 增强向量的发布,我知道我们不久前才对它们进行了一些测试。现在,它们似乎从互联网上消失了。 2014 年的 NuGet 包仍然存在,但已除名: The owner has
什么是 Microsoft.Bcl.Async 及其用途? 我读过the package page那: This package enables Visual Studio 2012 projects
为什么 BCL 中没有 AutoResetEventSlim 类? 可以用ManualResetEventSlim模拟吗? 最佳答案 ManualResetEvent 和 ManualResetEve
为什么 .NET 基类库没有 CPR 类? 最佳答案 Eric Lippert 对“为什么未实现功能 X”有最好的解释(我认为他知道一两件关于为什么或为什么没有用语言实现的事情) I am asked
BCL 和 CLR(以后只使用 CLR)中的所有 .NET 程序集都是 strongly named and digitally signed .提供数字证书是为了确保程序集未被篡改或更换的信任度。但
我想调试 [MethodImpl(MethodImplOptions.InternalCall)] BCL 方法的实现,该方法可能是用 C++ 实现的。 (在本例中,我正在查看 System.Stri
我是一名优秀的程序员,十分优秀!