可以说C2是C1,我需要C2可以访问M1,而C1不能访问M2。如果我不需要多态性,下面的代码是否会和我在没有嵌套类的情况下做同样的事情完全一样,而是使用继承?
class C1 {
protected void M1() {
\\code
class C2 {
private void M2() {
\\code
}
}
}
您最初的示例在语法上是错误的:
class C1 {
protected void M1() {
\\code
class C2 {
private void M2() {
\\code
}
}
}
您不能C2
在M1
方法内部定义类。
您在评论中提出的另一个问题(改写):
为什么我们根本需要嵌套类?
一个唯一可以想到的就是这种情况:
public class C1
{
public void M1()
{
Console.WriteLine($"{this.GetType()}.M1()");
var c2 = new C2();
c2.M2();
}
private class C2
{
public void M2()
{
Console.WriteLine($"{this.GetType()}.M2()");
}
}
}
public class Program
{
public static void Main(string[] args)
{
var c1 = new C1();
c1.M1();
}
}
输出:
ClassesExample.C1.M1()ClassesExample.C1 + C2.M2()
我们有一个私有C2
类,只能从内部访问C1
。我不知道为什么要这么做。但是,如果真的需要,那就是嵌套类的用法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句