在F#口頭禪似乎有一個內臟迴避null
,Nullable<T>
之流。作爲交換,我們應該改用選項類型。說實話,我並沒有真正看到差異。選項類型和可空類型有什麼區別?
我的F#選項類型的理解是,它允許你指定一個類型,可以包含任何正常的值,或
None
的。例如,Option<int>
允許除None
之外的所有int
可以具有的值。我對C#可空類型的理解是,它允許您指定一個可以包含任何正常值的類型,或
null
。例如,除了null
之外,還可以使用Nullable<int>
也可以具有的所有值,即int?
。
有什麼區別?做一些詞彙替換Nullable
和Option
,null
和None
,你基本上有同樣的事情。什麼是關於null
的大驚小怪?
這是關於儘早避免邏輯錯誤 - 使用'option',你會得到編譯器警告/錯誤,無法檢查'None'; 'null'你不會。 – ildjarn
因此,理論上,如果有一個C#模式匹配,可以確保您處理了'null'的情況,那麼這將是一次洗牌? –
國際海事組織,幾乎沒有其他人會否認'null'的_semantic_的敏感性。 – ildjarn