报什么错误?是不是你在static方法里面调用了非static成员?

解决方案 »

  1.   

    没有,他说的是“在不带括号的情况下引用了方法someMethod” ;
    我主要不明白他的意思,大侠能不能举例说明他的意思?
      

  2.   

    delegate void SomeDelegate()和public void SomeMethod()传入的参数类型必须相同书上的例子很抽象,不要照搬
      

  3.   

    下面的示例显示多个委托的实例化及其相应的调用列表:delegate void D(int x);
    class C
    {
       public static void M1(int i) {...}
       public static void M2(int i) {...}
    }
    class Test
    {
       static void Main() { 
          D cd1 = new D(C.M1);      // M1
          D cd2 = new D(C.M2);      // M2
          D cd3 = cd1 + cd2;      // M1 + M2
          D cd4 = cd3 + cd1;       // M1 + M2 + M1
          D cd5 = cd4 + cd3;       // M1 + M2 + M1 + M1 + M2
       }
    }
    实例化 cd1 和 cd2 时,它们分别封装一个方法。实例化 cd3 时,它的调用列表有两个方法 M1 和 M2,而且正是这样的顺序。cd4 的调用列表包含 M1、M2 和 M1,顺序与此相同。最后,cd5 的调用列表包含:M1、M2、M1、M1 和 M2,顺序与此相同。
      

  4.   

    是啊,你们说的我都理解,但是那个www.idesign.net的C#编码标准--命名约定和风格里面说的“使用委托的引用替换显式的委托实例。”和它这个例子我就不理解了。
      

  5.   

    SomeDelegate someDelegate = SomeMethod;是肯定不行的,必须使用你后面的方法
      

  6.   

    hehe,那他这个规范不是有问题了?
      

  7.   

    //一个委托的例子
    namespace ConsoleTest
    {
    delegate void delegate1(string str);
    delegate void delegate2(int dd);
    class ZZConsole
    {
    [STAThread]
    static void Main(string[] args)
    {
    delegate1 d1= new delegate1(StrMethod);
    delegate2 d2= new delegate2(IntMethod);
    d1("代理包装字符串方法");
    d2(111111);

    Console.ReadLine();
    }
    public static void  StrMethod(string str)
    {
    Console.WriteLine(str);
    }
    public static void  IntMethod(int dd)
    {
    Console.WriteLine(dd.ToString());
    } }
    }
      

  8.   

    使用委托的引用替换显式的委托实例这句话应该是说用new出来的那个delegate来替代显示代码someDelegate。而不是直接用方法的reference(这里就是那个SomeMethod)来替换
      

  9.   

    原文是这样的
      Use delegate inference instead of explicit delegate instantiation.
      使用委托的引用替换显式的委托实例
    可能我钻了牛角尖,算了,结帖