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

C#のジェネリックメソッドからnullを返す方法:default(T)の使い方

ジェネリック(Generics)を使うと、フィールド、メソッド、パラメータなどの型をプレースホルダー(型パラメータ)として持つクラスを定義できます。これらのプレースホルダーは、コンパイル時に具体的な型へと置き換えられます。ジェネリックは山括弧 <> を使って定義するのが基本です。

C#のコレクションにおける主な制限の一つは、効果的な型チェックが行えないことです。C#ではすべてのクラスがobject基底クラスから派生しているため、コレクションには原理的にどんなオブジェクトでも格納できてしまいます。

さらに、通常のメソッドとは異なり、ジェネリックメソッドから単純にnullを返すことはできません。以下は、ジェネリックメソッドでnullを返そうとした場合に発生するエラーの例です。

using System;
namespace DemoApplication {
    class Program {
        public static void Main() {
            Add(5, 5);
        }
        public static T Add<T>(T parameter1, T parameter2) {
            return null;
        }
    }
}

そこで、ジェネリックメソッドからnullまたはデフォルト値を返したい場合は、default()を使用します。default(T)は、指定した型Tのデフォルト値(既定のオブジェクト)を返します。

サンプルコード

using System;
namespace DemoApplication {
    class Program {
        public static void Main() {
            Add(5, 5);
            Console.ReadLine();
        }
        public static T Add<T>(T parameter1, T parameter2) {
            var defaultVal = default(T);
            Console.WriteLine(defaultVal);
            return defaultVal;
        }
    }
}

実行結果

上記コードの出力は次のとおりです。

0

実行結果から、整数型(int)のデフォルト値である「0」が返されていることが確認できます。なお、default(T)の挙動は型によって異なります。参照型の場合はnull、数値型の場合は0、bool型の場合はfalseといった、各型の初期値が返されます。C# 7.1以降では、より簡潔なdefaultリテラルも利用できるため、状況に応じて使い分けると良いでしょう。

  1. C# ASP.NET Web APIのアクションメソッドからカスタム結果タイプを返す方法

    ASP.NET Web APIでは、IHttpActionResultインターフェースを実装することで、独自のカスタムクラスを結果タイプとして作成できます。IHttpActionResultインターフェースには、HttpResponseMessageインスタンスを非同期に生成する単一のメソッド ExecuteAsync が定義されています。public interface IHttpActionResult { Task<HttpResponseMessage> ExecuteAsync( CancellationToken cancellationToke

  2. Windows 10 で IDP.Generic ウイルスを削除する方法【原因と対策を徹底解説】

    IDP.Generic(Identity Protection Generic)は、アンチウイルスソフトが悪意のあるコードを検出した際に表示される危険な脅威です。この種のウイルスは、PCに密かに侵入するように設計されているため、明確な症状が現れにくく、バックグラウンドで動作しながら機密情報や個人情報を盗み出します。 IDP.Genericとは? IDP.Genericは、アンチウイルスソフトがシステム上の汎用(ジェネリック)マルウェアを検出したときに表示される検出名です。複数の種類の感染が「IDP.Generic」として一括りに分類されることがあります。例えば、ゲームファイルが脅威として検出さ