在 C# 中调用内部 class?

Call inner class in c#?

我有一个外层 class 和一个内层 class,如下所示:

class A
{
    public class B
    {
        public int number;
    }
}

我认为内部 class 很有用,因为我可以这样调用我的“number”字段: A.B.number = X; 但我不能称它为这个形状! 我从 A 创建一个实例,例如 => A a = new A(); 我想通过实例直接访问 B => a.B.number; 但我不能。 我知道如果我从 B 创建一个新的;我可以访问它,但我想知道如何以这种形式调用我的字段 => A.B.number NOT b.number 简而言之,我如何通过调用 A class 访问 B class。 (不是直接B

除了将 B class 描述放入 A 之外,您还可以将 属性 放入 A 类型 B ].

public class B 
{
    public int number;
}

public class A
{
    public A()
    {
        MyB = new B();
    }

    public B MyB { get; private set; }
}

然后您可以进行以下操作

A myA = new A();
int num = myA.MyB.number;

尽管我建议也将 number in B 设为 属性。

Class A 不会自动实例化 class B 的实例。您需要创建一个返回 B.

实例的 属性

例如

public class A {
    public A() {
        this.MyB = new B()
    }

    public B MyB {get; set;}
}

如果您想直接获得 b 的 属性,您可以委托给 B

public int BNumber 
{
    get
    {
        return MyB.number;
    }
}

话虽如此,为什么要在此处嵌套 class? Class B 不需要嵌套在 A 中,因为 A 具有类型 B 的 属性。我认为您可能将 class 定义与 属性 定义混为一谈。

内部 class 只是一个 class,如果你想引用它的属性,你需要有一个对象。

我觉得,你应该做一个B的对象

class A
{
    public B b = new B();

    public class B
    {
        public int number;
    }
}

我写这个答案是为了听取专家的意见。

class A
{
   public B b{ get; private set; }


     public A()
    {
        b= new B();
    }


    public class B
    {
        public int number;
    }
}

A a = new A();

现在您可以访问

a.b.number;