BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicrosoftはC# 8でNull許容参照型をプレビューする

MicrosoftはC# 8でNull許容参照型をプレビューする

原文(投稿日:2017/11/16)へのリンク

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氏は次のように書いた:

  1. 私たちは参照がnullにならないことがより一般的だと考えています。null許容参照型は、まれなもの(ですが、どれだけ多いかのデータはありません)だと考えており、新しいアノテーションを必要とします。
  2. 言語はすでにnull許容の型のための–構文–と記法があります。これら2つを近づけることで、概念的に簡単になり、言語的にシンプルになります。
  3. あなたがそれを積極的に望んでいないのであれば、あなたやその利用者にやっかいな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

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT