Class 访问外部类

Class 访问外部类,class,d,Class,D,我现在正在读《D编程语言》这本书。它讲述的是内部类 class Outer{ int x; this(){ x = 99; new Inner; } class Inner{ int x; this(){ x = 5; writeln( "Inner x = ", x, "; Outer x = ", this.outer.x );

我现在正在读《D编程语言》这本书。它讲述的是内部类

class Outer{
    int x;

    this(){
        x = 99;
        new Inner;
    }

    class Inner{
        int x;

        this(){
            x = 5;
            writeln( "Inner x = ", x, "; Outer x = ", this.outer.x );
        }
    }
}
正如书中所说,为了能够访问类Outer的x,我需要使用这个.Outer.x。但是一件令人困惑的事情是类“Outer”的名称变成了小写的“Outer”。使用普通类名“Outer”,编译器会给出错误消息。这就像编译器决定您需要使用什么作为名称,并强制使用它生成的名称一样

我的问题是,当我将类“Outer”重命名为“bLaH”时,现在我无法再将类外部化

class bLaH{
    int x;

    this(){
        x = 99;
        new Inner;
    }

    class Inner{
        int x;

        this(){
            x = 5;
            writeln( "Inner x = ", x, "; Outer x = ", this.bLaH.x );
        }
    }
}
访问外部类时使用什么名称并不明显。第一个字母现在是小写,但编译器说“test1.bLaH”没有定义。(文件名为test1.d)

如果我将“this.bLaH”转换为“this.bLaH”,因为我认为编译器可能会将外部类的名称转换为所有小写,那么这次,编译器会说“未定义的变量‘bLaH’”

语言中是否存在与此相关的设计错误?作为一名程序员,我不喜欢这种由编译器完成的名称转换


我在Windows XP上,DMD版本是2.060。

outer
是一个关键字。这就像是
super
之类的。一个类始终只嵌套在一个类中,因此
outer
关键字引用该类


在这里,您可以发现
外部
实际上是一个属性。

谢谢。我继续阅读,在“静态嵌套类”部分,作者突然说“神奇的。外部属性”,然后我明白了。干杯