2009-11-05 167 views
3
type IFooable = 
    abstract Foo : int -> int 

type IFooable2 = 
    abstract Foo : a : int -> int 

type MyClass() = 
    interface IFooable2 with 
     member this.Foo(b) = 7 

IFooable和IFooable2有什麼區別?它們是否相同? 在我的例子中,它的目的是什麼?何時使用它?這兩種語法之間的區別

回答

4

IFooable2命名其參數; IFooable沒有。

當系統反映參數名時,這很重要。例如,當您使用帶有ServiceContractAttribute標記的接口類型的WCF時,默認情況下,WCF會使用接口中的參數名稱來控制出現在線路上數據的XML投影中的名稱。

這也適用於工具,例如,從C#引用此F#代碼,聲明每種類型的變量,並查看每種方法的智能感知工具提示。

我建議總是聲明參數名稱(更喜歡第二個版本)。