2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#14のnullチェックは一行で済むらしい

Last updated at Posted at 2025-07-13

nullチェックが楽になるらしい

たまたま.NETの公式ドキュメントを漁っていたとき、とても興味深い新機能の情報をキャッチしました。

C#14 の新機能でオブジェクトの null チェックの記述がさらに楽になるらしい。
今回はそんな新機能をただただユルく試してみるだけの投稿です。

従来のnullチェック

例えば、以下のようなクラスがあるとします。

public class Item
{
    public string Name {get; set;}
}

このクラスのオブジェクトを他のクラスのメソッドで使用する場合。
Nameプロパティを他クラスから設定できるのは本来良い設計ではないですが…)

public void SetName(Item item)
{
    item.Name = "hoge";
}

このとき引数で受け取った item がnullであれば、System.NullReferenceExceptionが発生します。

item がnullでないことが確実でない限り、nullチェックを入れますよね。

そこで、今までなら以下のように記述するはずです。

public void SetName(Item item)
{
    if (item != null)
    {
        item.Name = "hoge";
    }
}

// もしくはパターンマッチングを使ってみたり
public void SetName(Item item)
{
    if (item is not null)
    {
        item.Name = "hoge";
    }
}

if を使って判定するしかなかったわけです😩

C#14のnullチェック

いよいよ本題です。

C#14以降では以下のようにスマートに記述することができます。

public void SetName(Item item)
{
    item?.Name = "hoge";
}

'?' を左辺で使用できるようになりました!
左辺がnullでない場合にのみ右辺が評価されるようになります。

簡単にnullチェックができる '?' にはめちゃくちゃお世話になっていますが、代入式の左辺で使用できなかったのは地味に不便だったので非常に助かります。

でもまだ業務では使えない…

C#14は .NET SDK10 からの対応で現状ではまだプレビュー版しかありません。
ましてや業務で使用しているC#はたしか7.0とかだった気がするので、業務ではもちろん使えません😒

いつか使えるようになる日がくるのか…?
今後も最新のリリース情報はこまめに発信していこうと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?