我做了一个非常简单的 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
方法; Add
是 Some
中的静态方法 - 所以你需要:
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/