为什么MemberAccessException不抛出



简单代码:

class Program
{
    static void Main(string[] args)
    {
        A a = new A();
        //Expect MemberAccessException here
        //(http://msdn.microsoft.com/en-us/library/system.delegate.method.aspx)
        Console.WriteLine("Delegate.Method: " + a.ACallback.Method); 
        Console.ReadLine();
    }
}
public delegate void TestCallback();
class A
{
    public TestCallback ACallback;
    public A()
    {
        ACallback = new TestCallback(this.Some);
    }
    private void Some()
    {
        Console.WriteLine("Call Some");
    }
}

没有捕捉到任何异常,为什么?

from MSDN: Delegate。方法属性

MemberAccessException:调用者没有访问方法的权限由委托表示(例如,如果方法是私有的)。

但是你的A.ACallbackpublic

在我看来你的代码是完全有效的…如果由于试图访问委托的私有成员而期望抛出异常,则逻辑不正确。您正在通过类的公共成员调用私有方法,因此这很好地工作。

使TestCallback私有会导致编译时错误,我不确定你如何期望生成一个MemberAccessException?

相关内容

  • 没有找到相关文章

最新更新