type Student(name:string, age:int) = //备注:类的所有内容都不可左对齐,行首必须有空白字符,直到类声明结束 //构造函数体,name 会默认为类的一个私有变量 //私有字段 let mutable ageField = age //构造函数,调用其他构造函数初始化数据 new(name:string) = Student(name, 0) //member即 默认为Public,可以在类外访问。member public 类似Javascript中的this //只读属性 member this.Name = name //读写属性 member this.Age with get() = ageField and set(value) = ageField <- value //过年后,长大一岁 member this.GrowUp () = ageField <- ageField + 1 //是否成年 member this.IsOfAge targetAge = ageField >= targetAge //重写ToString override this.ToString () = "Name: " + name + "-" + "Age: " + (string)ageField //备注:类的所有内容都不可左对齐,行首必须有空白字符,直到类声明结束 //调用代码,必须靠左对齐,行首不能有空白字符(left margin) let student1 = Student("John", 43) let student2 = Student("Mary") //student1.ageField //备注:此字段为私有,不可在外部调用 student2.Age <- 15 student1.GrowUp() System.Console.WriteLine(student1.ToString()) //输出:Name: John-Age: 44 System.Console.WriteLine(student2.ToString())//输出:Name: Mary-Age: 15 System.Console.WriteLine(student2.IsOfAge(18))//输出:False