Aracılığıyla paylaş


Nesne ifadeleri (F#)

Bir nesne ifadesi dinamik olarak oluşturulan, adsız nesne türü için yeni bir örneğini oluşturan bir ifade bir taban türü var, arabirim veya arabirim kümesi dayalıdır.

// When typename is a class:
{ new typename [type-params] arguments with
   member-definitions
  [ additional-interface-definitions ]
}
// When typename is not a class:
{ new typename [generic-type-args] with
   member-definitions
  [ additional-interface-definitions ]
}

Notlar

Önceki sözdiziminde, typename varolan sınıf türü veya arabirim türünü temsil eder. type-paramsİsteğe bağlı genel türde parametreler açıklanır. arguments Yapıcı parametreleri gerektiren yalnızca sınıf türleri için kullanılır. member-definitions , Taban sınıfın yöntemlerini geçersiz kılmalarını ya da soyut temel sınıf veya arabirim yöntemleri uygulamaları.

Aşağıdaki örnek, birçok farklı türde nesne ifadeleri gösterilmiştir.

// This object expression specifies a System.Object but overrides the
// ToString method.
let obj1 = { new System.Object() with member x.ToString() = "F#" }
printfn "%A" obj1 

// This object expression implements the IFormattable interface.
let Delimiter(delim1 : string, delim2 : string ) = { new System.IFormattable with
                member x.ToString(format : string, provider : System.IFormatProvider) =
                  if format = "D" then delim1 + x.ToString() + delim2
                  else x.ToString()
           }

let obj2 = Delimiter("{","}");

printfn "%A" (System.String.Format("{0:D}", obj2))

// This object expression implements multiple interfaces.
type IFirst =
  abstract F : unit -> unit
  abstract G : unit -> unit

type ISecond =
  inherit IFirst
  abstract H : unit -> unit
  abstract J : unit -> unit

// This object expression implements an interface chain.
let Implementer() = { new ISecond with
                         member this.H() = ()
                         member this.J() = ()
                       interface IFirst with
                         member this.F() = ()
                         member this.G() = ()
                    }

Nesne ifadeleri kullanma

Fazladan kod ve yeni, oluşturulacak türü adlı gerekli yükü önlemek istediğinizde nesne ifadeleri kullanın. Bir programda oluşturulan türlerinin sayısını en aza indirmek için nesne ifadeleri kullanmak, kod satırlarının sayısını azaltmak ve gereksiz silahların türlerini engellemek. Yalnızca belirli durumlarda işlemek için birçok oluşturmak yerine, var olan bir türün özelleştirir veya elinizdeki özel durumunuz için uygun bir arabirim uygulaması sağlayan bir nesne ifadesi kullanabilirsiniz.

Ayrıca bkz.

Diğer Kaynaklar

F# dil başvurusu