F#对象在成员之前引用self-in-let绑定

F#对象在成员之前引用self-in-let绑定,f#,F#,对象是否可以在成员定义之前引用自身?大概是这样的: type public ClassA () = class let b = new ClassB(this) member public x.getClassB() = b end 其中“this”是对创建ClassB的ClassA实例的引用。类可以在其构造函数中使用as来引用它们自己: type public ClassA () as this = let b = new ClassB(this)

对象是否可以在成员定义之前引用自身?大概是这样的:

type public ClassA () = class
    let b = new ClassB(this)
    member public x.getClassB() = b
    end

其中“this”是对创建ClassB的ClassA实例的引用。

类可以在其构造函数中使用
as
来引用它们自己:

type public ClassA () as this = 
    let b = new ClassB(this)
    member public x.getClassB() = b
and public ClassB (a: ClassA) =
    member public x.getClassA() = a

在这个示例(或更简单的示例)中,使用
x
this
之间有什么区别吗?@torbonde
x
定义了成员的“self”属性,而
this
具有构造函数范围。成员必须始终具有“self”属性,但可以省略构造函数的自标识符。为清楚起见,构造函数级别的自标识符(“上例中的“this”)和成员级别的自标识符(“x”)都可以是任何其他未使用的标签。例如:键入public ClassA()作为foo=let b=new ClassB(foo)成员public bar.getClassB()=b和public ClassB(a:ClassA)=member public bar.getClassA()=a…并且您可以通过使用uuu-来“有效地”省略方法的自标识符,例如键入public ClassA()作为foo=let b=new ClassB(foo)成员public.getClassB()=b和公共类b(a:ClassA)=成员公共_uu.getClassA()=a