從技術上講,一個不同之處在於,您應該在創建IDisposable
對象時使用new
,因爲已經解釋了nyinyithann。另一個區別是,你可以創建通用型時省略類型參數:
// Works and creates Dictionary<int, string>
let r1 = System.Collections.Generic.Dictionary 10
r1.Add(10, "A")
// You get a compiler error when you write this:
let r2 = new System.Collections.Generic.Dictionary 10
r2.Add(10, "A")
從這兩件事
除此之外,沒有技術差異(且有一定的產生IL沒什麼區別,當你寫或省略new
) 。
你應該在什麼時候使用?這是一個風格問題。這不包含在任何F#編碼標準中,因此這取決於您的偏好。現在我正在考慮這個問題,我自己可能沒有非常一致的風格。我想創建實例時一般使用new
要分配使用let
爲值:
let rnd = new Random()
然而,我通常不創建對象時,可以使用作爲參數(例如,在下面的例子中Size
或Point
使用new
):
let frm = new Form(Size = Size(600, 400))
let gr = frm.CreateGraphics()
gr.FillRectangle(Brushes.Red, Rectangle(Point(0, 0), Point(100, 100)))
可能的話,我也喜歡用new
更復雜的類型和避免它簡單類型或.NET值類型(但我不認爲我這樣做太一致)。
我沒想到這是唯一的區別:)謝謝。 – Andry 2011-02-13 14:34:23