public event fun1Delegate newEvent; public使得newEvent可以被他人使用。 如果他不知道newEvent的类型(fun1Delegate)是什么,如何使用它?
委托倒不一定要public,这样也可以: public class Test1 { private String name; public String Name { get { return name; } set { name = value; newEvent(this, new newEventEventargs(name)); } } private delegate void fun1Delegate(Test1 sender, newEventEventargs e); private event fun1Delegate newEvent; }
public使得newEvent可以被他人使用。
如果他不知道newEvent的类型(fun1Delegate)是什么,如何使用它?
{
private String name;
public String Name
{
get { return name; }
set { name = value; newEvent(this, new newEventEventargs(name)); }
}
private delegate void fun1Delegate(Test1 sender, newEventEventargs e);
private event fun1Delegate newEvent;
}
如果你想让别人用你的newEvent,那newEvent的类型当然也必须是public的,不然他怎么用呢。。
如果你不想让别人就,就把newEvent定义成private的其实这算是error还是warning只是微软程序员的一念之差而已= =
private delegate void MyDelegate(object arg);//MyDelegate是private的~ 也就是说外面不知道
public event MyDelegate MyEvent;//这个MyEvent的类型(签名)是MyDelegate,但上面的MyDelegate是private
也就是说外面的调用者只知道MyEvent,但不知道MyEvent的类型(签名)是什么~
而C#是强类型语言~所以下面代码报同样的错误
private class InnerClass { };
public InnerClass MyClass { get; set; }
class Program
{
private delegate void MyDelegate(object arg);
public event MyDelegate MyEvent; private class InnerClass { };
public InnerClass MyClass { get; set; }
}
private delegate void fun1Delegate(Test1 sender, newEventEventargs e);类型的函数,如果你不公开该类型,外部无法获取。把private delegate void fun1Delegate(Test1 sender, newEventEventargs e);放在类外部则同一个命名空间的其它类应该可以调用。