23

null 非許容の質問と回答の多くを読みました。C# (4.0) で null 非許容型に近づける最良の方法は、Jon Skeet のNonNullable<>ハックのようです。

ただし、C++/CLI はマネージド参照をサポートすることで問題の多くを解決したようです: Foo%(ネイティブ C++ の代わりにFoo&)。コンパイラはmodreq(IsImplicitlyDereferenced)、引数に追加することでこれを機能させます。このような関数を C# から呼び出そうとすると、次のようになります。

'<FunctionName>' is not supported by the language

NonNullable<>よりも優れたものはありますか?

Foo::Method(Bar%)C# から C ++/CLI メソッドを呼び出す方法はありますか?


[編集]現在のところ、 NonNullable<>より優れたものはないようです ...少なくとも部分的な解決策がすでにあるので、C++/CLI に関するコメントがあればよかったのにと思います。

4

2 に答える 2

11

私はこれに数回遭遇しました...スキートの解決策よりも優れたものをまだ見つけていません. 私が遭遇したすべてのケースを解決したので、投票する必要があります。

私たちがそれに頼らなければならないのはちょっとハックな状況だと思います...しかし彼の修正は問題を解決します.

于 2010-02-02T04:21:57.627 に答える
1

はい、仕様番号: http://research.microsoft.com/en-us/projects/specsharp/

-- 編集: あなたが C# 4.0 と言ったことに気付きました。Spec# がそのバージョンをサポートしていないと確信しています。とはいえ、レビューする価値はあります。

Gendarme: http://www.mono-project.com/Gendarme (4.0 に対して実行されると仮定)のルールを使用して、少し後の段階でチェックしてからコンパイルすることもできます (と思います) 。

于 2010-02-11T05:22:00.687 に答える