我做了一个非常简单的 Delegates 程序。我不知道为什么它显示错误,即使我将它与 MSDN 库中给出的进行了比较,它与 MSDN 中的相同,但仍然没有被编译..错误说-“名称'添加'不存在在当前上下文中“和其他方法相同......减去。
请帮我看看是什么问题..

namespace DelegatePrac
{
   public delegate void One(int a, int b);
    public class Some
     {
  static void Add(int a, int b)
       {
      int c = a + b;    Console.WriteLine("{0}",c);
       }
       static void Subtract(int a, int b)
       { int c = a - b;  Console.WriteLine("{0}",c);
       }

    }

    class Program
    {
        static void Main(string[] args)
        {
            One o1,o2;
            o1 = Add;//gives error here
            o2 = Subtract;//and here!!
            o1(33,44);
            o2(45, 15);
         Console.ReadLine();
        }
    }
}

我正在关注此链接-http://msdn.microsoft.com/en-us/library/ms173175.aspx

谢谢

最佳答案

您应该会看到一条编译器消息:



它告诉你它不知道你在谈论哪个 Add 方法; AddSome 中的静态方法 - 所以你需要:

o1 = Some.Add;
o2 = Some.Subtract;

静态方法不是全局可用的;您可以仅通过名称访问当前类型(和基类型)中的静态方法,但如果它是不相关的类型,则需要使用声明类型对其进行限定。

此时它会给你一个编译器错误:



这暗示它是一个私有(private)方法;所以向它们添加 public (或 internal ):
public static void Add(int a, int b) {...}

关于c# - 代表计划,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4668829/

10-12 04:29