C# 在c中初始化集合属性时避免使用样板代码#
在c#中初始化属性(或字段)时,有没有办法避免两次写入完全相同的类型?(类似于Java中的菱形操作符的东西就可以了……) 例如,假设我有以下代码: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= 新字典(); 有没有办法避
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
中表示一件事,在新的表达式中表示另一件事,那就有点奇怪了。我可能比大多数人对“增加语言规范的复杂性”成本更敏感:)我明白了。谢谢