C#嵌套类与没有多态性的子类之间的差异



假设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
}
}
}

不能在M1方法中定义C2类。


您在评论中提出的另一个问题(改写(:

为什么我们需要嵌套类?

a唯一能想到的就是这样的情况:

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((类别示例.C1+C2.M2((

我们有一个私有的C2类,它只能从C1内部访问。我不知道我为什么要这么做。但如果真的需要,那就是嵌套类的用法。

最新更新