// 例子程序里展示了如何使用 FP 的风格建立窗体 let form = let form = new Form(Text = "MyForm") let b = new Button() form.Controls.Add b form // 但是今天我们要讨论的是如何像 C# 那样继承自 Form 实现自己的类 // 第一种方法是我在 Simple101 中看到的 // 这是一种被称为详尽语法(Explicit syntax) // 这是最中规中矩的定义方式 当然也最繁琐 typeMyForm1= inherit Form val b :Button member t.InitializeComponent() = t.Text <- "MyForm1" t.Controls.Add t.b new() as t = { b = new Button() } then t.InitializeComponent() // 第二种是很常规的定义类的方法 // 被称为隐含语法(Implicit syntax) // 隐含了什么? 我猜是隐含了构造函数吧 // 之前一直疑惑构造函数隐含了 那我怎么调用呢? typeMyForm2() = inherit Form() let b = new Button() member t.InitializeComponent() = t.Text <- "MyForm2" t.Controls.Add b // 感谢 Tomas Petricek // 我一直不解的问题终于解开了 原来可以后接 as 语法来指向自己 typeMyForm3() as t = inherit Form() let b = new Button() do t.Text <- "MyForm3" t.Controls.Add b // 感谢 Danny Asher // 他的方法提醒了我基类的方法是可以直接调用的 typeMyForm4() = inherit Form() let b = new Button() do base.Text <- "MyForm4" base.Controls.Add b