【问题标题】:How to access private class method in nested class如何访问嵌套类中的私有类方法
【发布时间】:2014-08-25 10:12:48
【问题描述】:

如何在此处访问方法DoSomething()?当我创建SomeClass 类型的对象时,我无法访问它。

另一方面,在公共类中包含私有类有什么用?

public class SomeClass
{
    public string str = string.Empty;

    private class SomePrivateClass
    {
        public void DoSomething()
        {
            ...
        }
    }

}

【问题讨论】:

标签: c# oop


【解决方案1】:

你需要在外部类里面创建嵌套类的对象:

public class SomeClass
{
    public string  str= string.Empty;

    private class SomePrivateClass
    {
         public void DoSomething()
         {

         }
    }
    public void CreateObjectOfSomePrivateClass()
    {
        SomePrivateClass obj = new SomePrivateClass();
        obj.DoSomething();
    }
}

【讨论】:

    【解决方案2】:

    DoSomething 是一个 instance 方法和一个public 方法,这意味着任何可以访问该类型(类)定义的代码实际上都可以调用该方法。而且由于SomePrivateClassSomeClass的私有类,那么它只能在withinSomeClass进行实例化。您应该集中精力阅读更多关于静态成员和实例成员之间区别的信息(例如this MSDN article)。

    话虽如此,私有类可以做的一件事是访问父类的私有字段(实例和静态,但同样你需要有一个实例 的父类,以便调用其实例方法),而其他类不能。

    【讨论】:

    • Nitpick:“任何可以实例化该类型对象的代码”——或者更准确地说,任何可以获取该类型实例的代码(即使它本身不能实例化该类型) .
    • @O.R.Mapper:是的,这是正确的,或者甚至更好,只要类定义对客户端代码可见,因为您可以通过以下方式轻松获取私有或内部类的实例完全不需要公开方法的公共接口或其基类型。
    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多