C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】リストに要素が存在しない場合にデフォルト値を表示する方法

C#でプログラミングを行っていると、空のリスト(要素が1つも含まれていないリスト)から先頭の要素を取得したいケースがあります。このとき、通常のFirst()メソッドを使うと、要素が存在しないため例外(エラー)が発生してしまいます。

そこで役立つのが FirstOrDefault() メソッドです。このメソッドを使えば、リストが空の場合でもエラーを回避し、型ごとのデフォルト値(float型なら 0.0f など)を安全に取得できます。

FirstOrDefault() メソッドとは

FirstOrDefault()は、System.Linq 名前空間に含まれる拡張メソッドです。シーケンス(リストや配列など)の最初の要素を返しますが、要素が存在しない場合には例外をスローせず、その型のデフォルト値を返します。

まず、要素が1つもないリストを用意します。

List<float> val = new List<float> { };

この空のリストに対して、以下のように AsQueryable().FirstOrDefault() を呼び出すことで、エラーを発生させずにデフォルト値を取得できます。

val.AsQueryable().FirstOrDefault();

また、取得したデフォルト値が特定の条件(例:0.0f)と一致した場合に、別の値へ置き換えるといった処理も簡単に実装できます。実際のコードを見てみましょう。

サンプルコード

using System;
using System.Collections.Generic;
using System.Linq;

class Demo {
   static void Main() {
      // 要素が空のリストを作成
      List<float> val = new List<float>{ };

      // FirstOrDefault() でデフォルト値を取得
      float a = val.AsQueryable().FirstOrDefault();
      Console.WriteLine("Default Value = "+a);

      // デフォルト値が 0.0f の場合は別の値に更新
      if (a == 0.0f) {
         a = 0.1f;
      }
      Console.WriteLine("Default Float value updated = "+a);
   }
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Default Value = 0
Default Float value updated = 0.1

ポイント解説

  • リストが空のため、FirstOrDefault() は float 型のデフォルト値である 0 を返します。
  • 戻り値が 0.0f だった場合に 0.1f へ更新することで、「要素が見つからなかったこと」を別の値で表現できます。
  • なお、参照型(クラス型など)の場合、デフォルト値は null になるため、null チェックと組み合わせて使うのが一般的です。

このように FirstOrDefault() を活用すれば、空のコレクションを扱う際の例外処理をシンプルにし、安全で読みやすいコードを書くことができます。

  1. プリンタードライバーがインストールされない「要素が見つかりません」エラーの対処法【Windows 11/10】

    Windows 11またはWindows 10のPCユーザーなら、エラーコード0x00000c1、0x0000052e、0x0000007c、0x000006e4といったプリンター関連のエラーに遭遇したことがあるかもしれません。この記事では、システムに手動でプリンターを追加・インストールしようとした際に表示される「プリンタードライバーがインストールされていません – 要素が見つかりません(Printer driver was not installed – Element not found)」というエラーを解決する方法をご紹介します。 プリンタードライバーがインストールされない「要素が見つ

  2. bcdedit実行時の「指定されたデータ要素を削除しようとしたときにエラーが発生しました。要素が見つかりません」エラーの解決方法

    Windows Update の実行中に「RAMディスクデバイスを作成するのに十分なメモリがありません。エラーコード 0xc0000017」というエラーが表示されることがあります。この問題への対処としては、bcdedit /deletevalue {badmemory} badmemorylist コマンドの実行が推奨されています。多くの場合、このコマンドで問題は解決しますが、一部のユーザーからは、コマンド実行後に別のエラー——「指定されたデータ要素を削除しようとしたときにエラーが発生しました。要素が見つかりません」——が発生したという報告があります。本記事では、このエラーが起こる理由と具体的