2010-02-02 42 views
21

我讀過non-nullable許多問題和答案。看起來像C#(4.0)中接近非空類型的最好方法是Jon Skeet的NonNullable<>黑客。如何在C#中近距離接近不可空引用類型?

但是,似乎C++/CLI通過支持託管引用:Foo%(而不是本機C++ Foo&)解決了許多問題。編譯器通過將modreq(IsImplicitlyDereferenced)添加到參數中來完成此工作。試圖從C#導致調用這樣的功能:

'<FunctionName>' is not supported by the language 

有沒有什麼更好的那麼非空<>

有什麼辦法(合理 - 即不使用反射)從C#調用C++/CLI方法Foo::Method(Bar%)


[編輯]似乎有什麼目前優於非空<> ...我想我會得到在C++/CLI的東西有些意見,因爲它已經至少部分解。

+0

鏈接已經死了。新的鏈接:http://codeblog.jonskeet.uk/2008/10/06/non-nullable-reference-types/ – 2016-03-25 10:40:09

+0

修正,謝謝... – 2016-03-25 16:47:35

回答

10

我碰到過這幾次......我還沒找到比Skeet的解決方案更好的東西。它解決了我遇到的所有情況,所以我必須給它投票。

我同意這是一個哈克的情況,我們不得不訴諸於...但他的修復確實解決了這個問題。

+1

這感覺更像是一個評論而不是答案。 – Russell 2010-02-02 04:52:23

+6

@Russell - 他問是否有更好的解決方案......經過大量搜索,我從未找到過。如果我要花很多時間看,這是我從一開始就想要的答案。這是對他的部分問題的迴應:「有沒有更好的NonNullable <>?」 – 2010-02-02 04:55:57