在此代码中使用括号是什么意思

时间:2014-08-14 03:03:18

标签: f#

我这里有一段代码片段,但我不理解其中使用“new(code)”。

type Product (code:string, price:float) = 
   let isFree = price=0.0 
   new (code) = Product(code,0.0)
   member this.Code = code 
   member this.IsFree = isFree

具体为什么需要在括号内包含“code”变量。

1 个答案:

答案 0 :(得分:5)

那是一个构造函数。来自MSDN: Classes (F#)(请参阅'构造函数'):

  

您可以使用new关键字添加其他构造函数以添加成员,如下所示:

     

new (argument-list) = constructor-body

在您的示例中,Product类型有一个默认构造函数,它接受codeprice,另一个构造函数只接受code并应用默认构造函数0.0 price。在这种情况下,code周围的括号不是严格要求的,如果没有它,代码将编译相同,但如果您希望构造函数采用零参数或多个参数,则需要它。

等效的C#将是这样的:

public class Product
{
    private string code;
    private bool isFree;

    public Product(string code, double price) {
        this.code = code;
        this.isFree = price == 0.0;
    }

    public Product(string code) : this(code, 0.0) { }

    public string Code { get { return this.code; } }
    public float IsFree { get { return this.isFree; } }
}