【问题标题】:Is it a Wrong Code in MSDN?它是 MSDN 中的错误代码吗?
【发布时间】:2014-05-29 05:07:17
【问题描述】:

我在 MSDN (here) 中发现以下代码似乎是错误的(编译时错误)。不是吗?

delegate void D(int x);
class C
{
   public static void M1(int i) {...}
   public void M2(int i) {...}
}
class Test
{
   static void Main() { 
      D cd1 = new D(C.M1);      // static method
      Test t = new C();         // <---- WRONG-------
      D cd2 = new D(t.M2);      // instance method
      D cd3 = new D(cd2);      // another delegate
   }
}

考虑这一行:

Test t = new C();

C 类不是从Test 类派生的,所以这个赋值不会编译。我在这里遗漏了什么(一些我在文章中没有考虑到的假设?)

即使 C 类是从 Test 派生的,以下行也是错误的:

D cd2 = new D(t.M2);

不是吗?

【问题讨论】:

标签: c# msdn


【解决方案1】:

那行应该是

C t = new C();

您也可以使用(在新版本的 C# 中)

var t = new C();

下一行t.M2 有效的唯一方法是t 的类型为C

【讨论】:

  • 鉴于该版本的页面是指 Visual Studio .NET 2003,它应该是前者而不是后者。见msdn.microsoft.com/en-us/library/bb383973%28v=vs.90%29.aspx
  • @ClickRick:嗯,我们不知道 kami 使用的是哪个版本的 C#,但我同意 var 不适合 MSDN 的那个部分。编辑澄清。
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多