如何访问嵌套类中的私有类方法
Posted
技术标签:
【中文标题】如何访问嵌套类中的私有类方法【英文标题】: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()
...
【问题讨论】:
您可以通过SomeClass
的方法访问DoSomething
(使用SomePrivateClass
的实例)。
dotnetfiddle.net/dh62Hk
Private inner classes in C# - why aren't they used more often?
由于您将问题标记为 OOP - 当您打算访问嵌套类型的成员时,通常建议不要使用嵌套类型。
您想从哪里访问 DoSomething?来自某类?或者您是否尝试从完全不同的类访问它?
【参考方案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
方法,这意味着任何可以访问该类型(类)定义的代码实际上都可以调用该方法。而且由于SomePrivateClass
是SomeClass
的私有类,那么它只能在withinSomeClass
进行实例化。您应该集中精力阅读更多关于静态成员和实例成员之间区别的信息(例如this MSDN article)。
话虽如此,私有类可以做的一件事是访问父类的私有字段(实例和静态,但同样你需要有一个实例 的父类,以便调用其实例方法),而其他类不能。
【讨论】:
Nitpick:“任何可以实例化该类型对象的代码”——或者更准确地说,任何可以获取该类型实例的代码(即使它本身不能实例化该类型) . @O.R.Mapper:是的,这是正确的,或者甚至更好,只要类定义对客户端代码可见,因为您可以通过以下方式轻松获取私有或内部类的实例完全不需要公开方法的公共接口或其基类型。以上是关于如何访问嵌套类中的私有类方法的主要内容,如果未能解决你的问题,请参考以下文章