Microsoftは、新しい機能を試して、フィードバックを提供したい開発者向けのプレビューとしてNull許容参照型(Nullable Reference Types)を提供している。
Null許容参照型プレビューは、Visual Studio 2017 15.5 Preview 4+のRoslyn拡張として提供されている。.NET Frameworkプロジェクトは現在サポートされており、.NET Coreがまもなく続く予定です。この機能は最新のC# 8においてデフォルトで有効になっている。Microsoftは必要なインストール手順を提供している。
C# 8で導入された新しいNull許容参照型は、1965年にALGOLの作業をしていた時に考え出され、英国のコンピュータ科学者であるTony Hoare氏により10億ドルの間違えと言われたnull参照を解決するためのものだ。ポインターの主な問題は、それがnullであることが予想されないことがあることである。機能が提供されてから、、時とともにnullポインターは主要なバグの原因であることがわかってきた。
“C#の非null参照型の追加” は、2011年にVisual Studio/User Voiceに提案され、ユーザーの投票により、年末には#15まで上昇してきた。現在ではUser Voiceの#1要求機能となっている。実装に非常に長い時間がかかった理由のひとつは、C#があらゆるところでnull参照を使っていることである。C#のリードデザイナーであるMads Torgersen氏は説明する:
null参照の問題は、それが非常に便利だということです。C#ではすべての参照型のデフォルト値です。他のなにをデフォルト値にすればよいでしょう?変数がアサインされるまでの間、他のどんな値を持てばよいでしょう?配列の参照が埋められるまでに間、他のどんな値を割り当てればよいでしょう?
また時々nullは、それ自身が意味のある値です。時々、フィールドが値を持たないことを表現したいことがあります。パラメータに“nothing”を渡したらよいわけではありません。時々これが重要になります。また他の問題もあります: C#のような言語は、ここではnullが正しいかどうかを表現できません。
C#では非null許容参照型ではなく、Microsoftは非null許容を参照型のデフォルトにして、null許可型を処理するためのメカニズムを提供することにした。彼らは多くの場合、非null許容の参照が望まれていると考えた。Torgersen氏は次のように書いた:
- 私たちは参照がnullにならないことがより一般的だと考えています。null許容参照型は、まれなもの(ですが、どれだけ多いかのデータはありません)だと考えており、新しいアノテーションを必要とします。
- 言語はすでにnull許容の値型のための–構文–と記法があります。これら2つを近づけることで、概念的に簡単になり、言語的にシンプルになります。
- あなたがそれを積極的に望んでいないのであれば、あなたやその利用者にやっかいなnull値を負わせるべきではありません。nullは、なくなるのではなく、明示的にオプトインするようになります。
null許容参照型は、以下の例のように?
で定義される:
class Person {
= public string FirstName; // Not nullll
= public string? MiddleName; // May be nullll
= public string LastName; // Not nullll
}
Microsoftはこの新しい機能を開発者に試してもらうため、使い方のフィードバックを提供している。
このトピックの詳細: C#の機能: Null許容参照型,C# 8.0プレビュー, C#のNull非許容型の提案
Rate this Article
- Editor Review
- Chief Editor Action