背景
当前,如果我想用C#或Java创建new
对象,请键入类似于以下内容:
C#3.0试图通过实现以下编译器技巧来提高简洁性:
问题
由于编译器已经知道我想创建某种特定类型的新对象(由于我在实例化它的过程中没有为其分配null
引用,也没有分配用于实例化它的特定方法),为什么我不能这样做以下?
//default constructors with no parameters:
List<int> listOfInts = new(); //c#
ArrayList<String> data = new(); //Java
后续问题:
var
)并且仍然保留含义? 注意:我在这种功能中看到的主要好处之一就是清晰度。可以说var不受限制。对我来说,它是没有用的,它会从正确的位置获得任务,那么为什么要麻烦呢?对我来说,new()实际上缩短了它的含义。无论您声明什么,它都是new(),对我来说这将是简洁明了的。
最佳答案
我同意这将是一个不错的功能。一个更好的例子是需要更多的输入:
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
如果可以将其实例化为:
Dictionary<string, int> myDictionary = new();
和:
Dictionary<string, int> myDictionary = { {"a",1}, {"b",2} };