Skip to main content
 首页 » 编程设计

c#之集合初始化语法,有什么用

2024年01月13日30落叶

我们可以像这样使用函数

public static List<T> New<T>(params T[] items) { 
    return new List<T>(items); 
} 

更重要的是它更好

var list = new List<int> {1,2,3}; 
var list = List.New(1,2,3); 

那么,什么时候我们真的需要用到它呢?

字典

public static Dictionary<T, K> New<T, K>(T key, K value) { 
    return new Dictionary<T,K>().FAdd(key, value); 
} 
 
var dict = new Dictionary<int, string>(){ 
 {1, "a"}, 
 {2, "b"} 
}; 
 
var dict = Dict.New(1,"a").FAdd(2, "b"); 

为什么更好,类型推断

var x = new Dictionary<string, List<int>>(){ 
   {"a", new List<int>{1}}, 
   {"b", new List<int>{2}}, 
} 
 
var x = Dict.New("a", List.New(1)).FAdd("b", List.New(2)); 

请您参考如下方法:

这需要在您的类型中添加一个新函数。集合初始值设定项不需要任何外部代码即可工作 - 您可以将它们用于任何兼容的集合类型,并且由编译器自动处理。

此外,使用语言功能而不是滚动您自己的方法将使代码对其他开发人员更加明显。由于您使用的是标准语言功能,因此意图变得显而易见。使用扩展方法很容易掩盖您的意图。

So, when we really need to use it?

您永远不需要使用它。与所有语言功能一样,它是一种工具 - 作为开发人员,您可以自行决定使用或忽略。