BT

Your opinion matters! あなたのご意見でInfoQが変わる!

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

| 作者: Abel Avram フォローする 4 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2017年11月21日. 推定読書時間: 3 分 |

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

原文(投稿日: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
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT