IRONSOFTWAREHOME
開発者向けアップデート

C#のヌル可能型(開発者にとっての仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

C#を使用する場合、特に参照型ではnull値を扱う必要があることがよくあります。C#のnullable型は、値型に対して未定義または存在しない値を表現する方法を提供します。このガイドでは、C#のnullable型の基本、実際の使用法、およびさまざまなシナリオでの動作について説明します。 記事の後半ではIronPDFも探ります。

Nullable Types in C#

C#ではデフォルトで値型(例:int、bool、DateTime)にnull値を割り当てることはできません。 この制限に対処するために、C#はnullable値型を導入し、値型にnullを割り当てることができます。nullable型は、有効な値が欠如している場合に特に役立ちます。

Nullable型の宣言

C#でnullable型を宣言するには、次の構文を使用します。

// Declare a nullable integer
int? nullableInt = null;

ここで、int? は Nullable<int> の省略形です。 nullableInt 変数は int 値または null を保持できます。

nullを確認する

ヌル許容型変数に値があるかどうかを確認するには、HasValue プロパティを使用するか、以下のように変数を直接 null と比較します:

if (nullableInt.HasValue)
{
    // If nullableInt has a value, print it
    Console.WriteLine("Value: " + nullableInt.Value);
}
else
{
    // If nullableInt does not have a value, print a message
    Console.WriteLine("No value assigned.");
}

また、nullable型がnullの場合にデフォルト値を提供するために、null合体演算子(??)を使用することもできます。

// Assign 0 if nullableInt is null
int result = nullableInt ?? 0;
Console.WriteLine("Result: " + result);

nullableInt が null の場合、result はデフォルト値の 0 が割り当てられます。

Nullable値型とNullable参照型

C#では、値型(int、bool、doubleなど)と参照型(string、objectなど)は異なります。 nullable値型は値型にnullを表現することを許可し、nullable参照型はデフォルトで参照型を非nullableにすることで、null参照例外のリスクを軽減します。

Nullable値型

nullable値型は、値型にnull値を取らせることを可能にします。 ヌル許容の値型を宣言するには、データ型に質問符 ? を追加します:

// Declare a nullable double
double? nullableDouble = null;

この例では、nullableDouble は double 値または null を保持できます。

Nullable参照型

ヌル許容参照型は C# 8.0 で導入されました。プロジェクトレベルでヌル許容参照型を有効にすることができ、またはコードファイルの先頭に #nullable enable ディレクティブを追加することで有効にできます。ヌル許容参照型が有効になっている場合、参照型は ? を使用して明示的にヌル許容としてマークされる必要があり、null 参照による潜在的なランタイム例外を回避するのに役立ちます。

#nullable enable
// Declare a nullable string
string? nullableString = null;

ここで、nullableString は null が許可されています。 ? なしで非ヌル許容参照型を宣言すると、コンパイラは潜在的な null 代入を検出した場合に警告を生成します。

Nullable参照型の有効化

プロジェクトでヌル許容参照型をグローバルに有効にするには、.csproj ファイルに次の行を追加します:

<Nullable>enable</Nullable>
XML

一旦有効化されると、コンパイラはデフォルトで参照型を非nullableとして扱います。 この機能は、実行時ではなくコンパイル時にnull参照の問題を検出するのに特に便利です。

実用的な例

nullable型の理解を深めるためにいくつかの実用的な例を見てみましょう。

例1: 値型とNullable型

この例では、intを使用したnullable型を使用します。

class Program
{
    static void Main(string[] args)
    {
        int? nullableInt = null;
        // Use null coalescing operator to assign a default value
        int b = nullableInt ?? 10;
        Console.WriteLine("b: " + b);
        if (nullableInt.HasValue)
        {
            // nullableInt has a value
            Console.WriteLine("nullableInt has value: " + nullableInt.Value);
        }
        else
        {
            // nullableInt is null
            Console.WriteLine("nullableInt is null");
        }
    }
}

ここで、nullableInt は int のヌル許容型変数です。 nullableInt が null の場合、null 合体演算子により b に 10 の値が設定されます。 それ以外の場合、b は nullableInt の値を取得します。

例2: Nullable参照型

次に、nullable参照型がどのように機能するか見てみましょう。

#nullable enable
class Program
{
    static void Main()
    {
        string? nullableString = null;
        string nonNullableString = "Hello";
        // Use null coalescing operator to provide a default value for length
        Console.WriteLine(nullableString?.Length ?? 0);
        Console.WriteLine(nonNullableString.Length);
    }
}

上記のコードでは、nullableString は null である可能性があり、null 合体演算子は、それが null である場合、文字列の長さがデフォルトで 0 になることを保証します。

例3: ネストされたNullable型

C#はネストされたnullable型を宣言することを許可しています。例:

// Redundant, but syntactically valid
int? nestedNullableInt = null;

ネストされたnullable型は冗長に見えるかもしれませんが、C#では文法的に有効です。 ただし、実際には、ネストされたnullable型は追加の機能を提供せず、滅多に使用されません。

Null合体演算子(??)

null合体演算子(??)は、nullable型がnullの場合にデフォルト値を提供するために頻繁に使用されます。 この演算子は、明示的なif-elseチェックを避けつつコードを簡潔にします。

int? nullableValue = null;
// Assign -1 if nullableValue is null
int defaultValue = nullableValue ?? -1;

この例では、nullableValue が null の場合、defaultValue に -1 が割り当てられます。それ以外の場合、defaultValue は nullableValue の値を取得します。

コンパイル時エラーとNullable型

nullable参照型が有効化された状態では、C#はコンパイル中に潜在的なnull代入の問題を検出すると警告やエラーを生成します。 これらのコンパイル時エラーは、問題を早期に発見し、コードをより堅牢にします。

次の例を考えてみましょう。

string? nullableString = null;
// This will produce a compiler warning because nullableString may be null
string nonNullableString = nullableString;

この場合、nullableString を nonNullableString に割り当てると、nullableString が null である可能性があり、非ヌル許容型に割り当てることでランタイム例外が発生する可能性があるため、コンパイラ警告が生成されます。

IronPDFでのNullable型の使用

C# ヌル許容型 (開発者向けの動作方法): 図1 - IronPDF: C# PDFライブラリ

IronPDFは、開発者が.NETアプリケーションから直接PDFファイルを作成、編集、および操作するのに役立つC# PDFライブラリです。 HTMLをPDFに変換したり、レポートを生成したり、複雑な文書構造を扱ったりすることができます。

nullable型は、特に不完全な財務データを持つ会計士のためにPDFを生成する場合など、動的レポート生成シナリオにおいて役立ちます。 nullable型を使用することで、オプションのフィールドを管理し、例外を回避し、デフォルト値を提供できます。

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        int? optionalIncome = null;  // Nullable type for optional income
        string? clientName = "Iron Dev";  // Nullable reference type for client name
        var renderer = new ChromePdfRenderer();
        string htmlContent = $@"
            <h1>Financial Report</h1>
            <p>Client Name: {clientName ?? "Unknown"}</p>
            <p>Income: {optionalIncome?.ToString() ?? "Data not available"}</p>";
        // Render the HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF to disk
        pdf.SaveAs("FinancialReport.pdf");
        Console.WriteLine("PDF Generated Successfully.");
    }
}

C# ヌル許容型 (開発者向けの動作方法): 図2 - コードの出力例

このコードでは、ヌル許容型 (int? および string?) を使用してデータが欠落した場合も安全に対処しています。 null合体演算子(??)は、データが欠けている場合にデフォルト値がPDFに使用されることを保証します。

結論

C#におけるnullable型は、値型および参照型に対するnull値の処理において強力なツールです。nullable型を使用することで、null参照例外を回避し、コードの堅牢性を向上させることができます。 新しいプロジェクトではnullable参照型を有効にしてコンパイル時エラーチェックの恩恵を受け、nullable型を扱う際にはnull合体演算子(??)を使用してコードを簡素化することを心がけましょう。

IronPDFは無料トライアルを提供しており、実際に利用して機能を確認する機会を提供します。 With no cost upfront, you can test the waters and see how it fits into your development process. 次に進む準備ができたら、ライセンスは $999 から始まります。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から