Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中初始化集合属性时避免使用样板代码#_C#_Properties_Boilerplate - Fatal编程技术网

C# 在c中初始化集合属性时避免使用样板代码#

C# 在c中初始化集合属性时避免使用样板代码#,c#,properties,boilerplate,C#,Properties,Boilerplate,在c#中初始化属性(或字段)时,有没有办法避免两次写入完全相同的类型?(类似于Java中的菱形操作符的东西就可以了……) 例如,假设我有以下代码: private readonly Dictionary<string, ISomething> _dict = new Dictionary<string, ISomething>(); private readonly Dictionary\u dict= 新字典(); 有没有办法避

在c#中初始化属性(或字段)时,有没有办法避免两次写入完全相同的类型?(类似于Java中的菱形操作符的东西就可以了……)

例如,假设我有以下代码:

private readonly Dictionary<string, ISomething> _dict = 
                  new Dictionary<string, ISomething>();
private readonly Dictionary\u dict=
新字典();
有没有办法避免将类型
Dictionary()
或其部分写入两次


请注意,该类型已定义为
字典
,而不是
IDictionary

不,目前在C中没有类似的定义。显然,潜在的解决方案是允许使用
var
声明字段,但这是一个错误

看到C#中出现Java的“菱形运算符”之类的东西,我会有点惊讶,但我以前也很惊讶


如果您确实想避免键入,那么我希望Visual Studio在您键入
new
后帮助您完成作业。(就我个人而言,我并不认为打字是编码的主要瓶颈,但是…

不,目前在C#中没有这样的东西。显然,潜在的解决方案是允许使用
var
声明字段,但这是一个错误

看到C#中出现Java的“菱形运算符”之类的东西,我会有点惊讶,但我以前也很惊讶


如果您确实想避免键入,那么我希望Visual Studio在您键入
new
后帮助您完成作业。(就我个人而言,我并不认为打字是编码的主要瓶颈,但是……

不,不太可能。虽然一个好的IDE会自动完成/自动预测其中的大部分内容。在学习了F#之后,这种看似毫无意义的重复类型信息,编译器应该完全能够推断出来,总是有可能让我发疯……:)在F#中,不需要“好的IDE”;您只需编写
let private\u dict=Dictionary()
不,不太可能。虽然一个好的IDE会自动完成/自动预测其中的大部分内容。在学习了F#之后,这种看似毫无意义的重复类型信息,编译器应该完全能够推断出来,总是有可能让我发疯……:)在F#中,不需要“好的IDE”;出于兴趣,您只需编写
let private _dict=Dictionary()
,您是否可以详细说明为什么不引入菱形运算符/这不是一个好主意?嗯,菱形运算符只是Java泛型中声明类型参数的简写,但如果C具有类似的语法
var list=new list()
自动指向
列表
类型。@Evantimboli:鉴于
已经在
类型中使用,这增加了很大的复杂性。(我希望它也能用于
nameof
)如果
Dictionary
typeof
中表示一件事,在
新的
表达式中表示另一件事,那就有点奇怪了。我可能比大多数人对“增加语言规范的复杂性”成本更敏感:)我明白了。谢谢。出于兴趣,您能详细说明一下为什么不引入菱形运算符/这不是一个好主意吗?嗯,菱形运算符只是Java泛型中声明类型参数的简写,但是如果C#具有类似的语法
var list=new list()
自动指向
列表
类型。@Evantimboli:鉴于
已经在
类型中使用,这增加了很大的复杂性。(我希望它也能用于
nameof
)如果
Dictionary
typeof
中表示一件事,在
新的
表达式中表示另一件事,那就有点奇怪了。我可能比大多数人对“增加语言规范的复杂性”成本更敏感:)我明白了。谢谢