对于普通属性getter / setter语法
let mutable myInternalValue
member this.MyProperty
with get() = myInternalValue
and set(value) = myInternalValue <- value
是否有一个快捷方式,类似于C#中的以下内容?
someType MyProperty { get; set; }
如果有,我似乎无法找到它......
答案 0 :(得分:51)
F#3具有自动实现的属性,因此您可以在不声明支持字段的情况下声明属性。
从MSDN上的Properties(F#)获取的示例:
type MyClass() =
member val MyProperty = "" with get, set
答案 1 :(得分:11)
在F#中没有创建get
/ set
属性的快捷方式,但如果您想要一个只有get
的属性,则可以使用以下简单语法:
type Test(n) =
let myValue = n * 2
member x.Property =
// Evaluated each time you access property value
myValue + 5
由于F#是一种函数式语言,因此F#类型通常是不可变的。这种语法使得定义不可变类型变得非常容易,因此它也鼓励你在F#中使用一个好的函数式编程风格。
但是,我同意get
/ set
属性的快捷方式非常有用,特别是在编写需要与C#/其他.NET库进行互操作的代码时。
编辑(5年后......):这已在F#3.0中添加,Ben的答案显示: - )
答案 2 :(得分:2)
是否有一个快捷方式,类似于C#中的以下内容?
我不这么认为(在“专家F#”的语法摘要中没有显示),与C#中所需的完整语法相比,F#语法已经相当简短。