這兩種語法都是等價的(至少我猜他們是)。我應該使用新的Type()還是Type()來調用構造函數
let o1 = new Object()
或
let o2 = Object()
哪種方式你更頻繁地使用?可讀性問題呢?
這兩種語法都是等價的(至少我猜他們是)。我應該使用新的Type()還是Type()來調用構造函數
let o1 = new Object()
或
let o2 = Object()
哪種方式你更頻繁地使用?可讀性問題呢?
它們是一樣的。
我更喜歡使用'new',除了這是我習慣於的其他語言以外,沒有什麼好的理由,並且它更容易爲構造函數調用找到tr/ grep(缺少智能工具來'查找所有引用'在解決方案中)。
我覺得省略「新」更實用一些,所以這是我的偏好。我喜歡你可以像處理返回類型實例的其他函數一樣處理構造函數。
也有道理..我認爲重要的是做出選擇,然後遵守它。 – Stringer 2009-12-03 21:03:10
我第二什麼kvb說。此外,我省略了new
,因爲這允許我直接在構造對象上調用成員,就像在C#中一樣。例如,後續的代碼工作:
DateTime(2012, 12, 21).ToString()
下面的代碼確實編譯錯誤不工作和結果:
new DateTime(2012, 12, 21).ToString()
所以現在我需要加上括號,以獲得new
表達它編譯:
(new DateTime(2012, 12, 21)).ToString()
我不喜歡額外的括號,所以我現在避免使用new
。
該一個案例我仍然會使用它的是當我創建一個實現IDisposable
的對象。這是因爲如果我省略了new
關鍵字創建IDisposable
F#編譯器會發出警告時:
let writeFile =
let writer = StreamWriter(@"hello.txt")
writer.WriteLine("hello")
結果在此:
warning FS0760: It is recommended that objects that support the IDisposable interface are created using 'new Type(args)' rather than 'Type(args)' to indicate that resources may be owned by the generated value
我可以通過在new
添加擺脫警告關鍵字:
let writeFile =
let writer = new StreamWriter("hello.txt")
writer.WriteLine("hello")
警告也使我認識到,我真的應該有一個use
我的結合:
let writeFile =
use writer = new StreamWriter("hello.txt")
writer.WriteLine("hello")
但如果我寫我的代碼使用new
所有的時間然後我將永遠不會得到警告,提醒我,我有IDisposable
工作!
它也可以減少打字。 ;-)
非常合乎邏輯的推理,爲什麼不使用'new',而只在必要時使用''use'。使用圓括號會導致乾淨的代碼。 – bugfoot 2016-12-20 09:45:38
似乎是最好的選擇,是的。 – Stringer 2009-12-02 00:28:38