【问题标题】:Generic KeyValuePair and Type Inference [duplicate]通用 KeyValuePair 和类型推断 [重复]
【发布时间】:2010-09-24 02:47:48
【问题描述】:

可能重复:
Why can't the C# constructor infer type?

为什么以下是正确的:

var foo = new KeyValuePair(3,4); //doesn't compile!
var boo = new KeyValuePair<int,int>(3,4); //works fine!

我认为这两行都是合法的,因为类型可以(应该)从参数中推断出来。解释?

【问题讨论】:

  • 这个也让我难过。我唯一能想到的是,这是因为它是构造函数而不是常规方法,但我不明白为什么会有任何区别。
  • @Ben,是的,一个骗子。你提到的问题由 Eric Lippert 回答,所以我会听从他的回答。 ;)
  • 这个重复的另一个问题的链接在哪里?

标签: c# .net generics type-inference


【解决方案1】:

简单地说,类型推断仅适用于方法,而不适用于构造函数。原因很简单,构造函数不带类型参数,只有类型和方法可以。也就是说,KeyValuePair 是一个未定义的类型。请记住,例如,可能有以下类型:Action、Action&lt;T&gt;、Action&lt;T1, T2&gt; 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2021-06-23
    • 1970-01-01
    • 2014-05-20
    相关资源
    最近更新 更多