フッターコンテンツにスキップ
.NETヘルプ

C# Null Coalescing (開発者向けの仕組み)

ヌル合体演算子??は右辺オペランドを評価し、左辺オペランドがヌル参照の場合、その結果を返します。 そうでない場合には、左辺オペランドの値を返します。 左辺オペランドが非ヌル可能な値タイプに評価された場合、ヌル合体演算子(??)は右辺オペランドを評価しません。 代入演算子??=はヌル合体の代入であり、左オペランドがヌル可能な型の値に評価される場合のみ、右オペランドの値を左オペランドに代入します。 左側のオペランドが非ヌル値に評価される場合、ヌル合体代入演算子(??=)は右辺オペランドを評価しません。 ヌル合体演算子は、三項演算子に似ています。

C#では、ヌル合体演算子(??)は二項演算子です。 二つのオペランドに作用する演算子は、二項演算子と呼ばれます。 ヌル合体演算子を使用するとき、二つのオペランドが必要とされ、各オペランドを評価して結果を決定します。 ここで、C#におけるヌル合体およびヌル条件演算子の使用法を見ていきます。

C#ヌル合体値タイプの使い方

  1. 新しいC#プロジェクトを作成します。
  2. 適切なバージョンがインストールされていることを確認してください。
  3. ヌル合体演算子??を使用します。
  4. 要件に基づいて、値またはオブジェクト参照タイプを確認します。
  5. コードを実行します。

C#でのヌル合体

C#のヌル値は、ヌル合体演算子(??)によってデフォルトで管理されます。この演算子は、ヌル可能な型やヌルになる可能性のある式を扱う際に使用される合体の概念を使って、これらの値を管理します。

構文

ヌル合体演算子の構文は次のとおりです:

result = expression1 ?? expression2;
result = expression1 ?? expression2;
result = If(expression1, expression2)
$vbLabelText   $csharpLabel
  • expression1: この式からヌル値が生成される可能性があります。
  • expression2: expression1がヌルの場合、使用されるデフォルトの値または代替の式です。
  • result: 合体操作の結果を保持する変数。

ヌル合体演算子は、ヌルデータを効率的に処理し、コードを合理化するために使用されるデフォルト値を割り当てる簡潔な方法を提供します。

利点

  • 簡潔さ: 複雑な条件文や三項演算子を必要とせずにヌルチェックを処理します。
  • コードの読みやすさ: ヌルが返された場合、デフォルト値が提供されることを明示することで改善されます。

ヌル合体演算子を使用する前に、比較される式のタイプが一致しているか、または互換性があることを確認することが重要です。

便利ですが、演算子を過度に使用するとコードの理解が難しくなることがあります。 コードの明瞭さが向上する場合に適度に使用してください。

ヌル可能な型やデフォルト値を必要とするシナリオを扱う際に、C#のヌル合体演算子(??)はヌル値を管理するための効果的なツールであり、コードをより簡潔で理解しやすいものにするのに役立ちます。

ヌル合体演算子?? 次のタイプ関連の特性を持っています:

結果タイプ推論

ヌル合体演算子の結果タイプは、以下のコードに示すように、式1と2が同じタイプである場合、それらのオペランドと同じです。

int? Value = null;
int result = Value ?? 10;
int? Value = null;
int result = Value ?? 10;
Dim Value? As Integer = Nothing
Dim result As Integer = If(Value, 10)
$vbLabelText   $csharpLabel

タイプ互換性

結果タイプは、式1と2が異なるタイプを持っているが、一方が他方に暗黙的に変換できる場合、両方の式が暗黙的に変換できるタイプです。

double? value = null;
int result = (int)(value ?? 5.5);
double? value = null;
int result = (int)(value ?? 5.5);
Imports System

Dim value? As Double = Nothing
Dim result As Integer = CInt(Math.Truncate(If(value, 5.5)))
$vbLabelText   $csharpLabel

タイププロモーション

式1と2のタイプが暗黙的に変換できない場合、結果タイプはC#のタイププロモーションルールに従って選択されます。

int? value = null;
long result = value ?? 100L;
int? value = null;
long result = value ?? 100L;
Dim value? As Integer = Nothing
Dim result As Long = If(value, 100L)
$vbLabelText   $csharpLabel

その結果、ヌル合体演算子(??)の結果を保持する変数や式のタイプは、関与するオペランドのタイプとC#のタイプ変換ルールによって決まります。 ヌル合体演算子を使用しながらタイプと値を正しく処理するために、互換性と可能なタイプ変換を考慮することが重要です。

IronPDFでの合体

IronPDFをインストールする

IronPDFライブラリをインストールするには、次のコードをパッケージマネージャーに入力します:

Install-Package IronPdf

C# Null Coalescing (開発者向け説明): 図1 - IronPDFをインストール

あるいは、NuGetパッケージマネージャーでパッケージ「IronPDF」を検索して使用することもできます。 IronPDFに関連するすべてのNuGetパッケージのリストから必要なパッケージを選択してダウンロードできます。

C# Null Coalescing (開発者向け説明): 図2 - NuGetパッケージマネージャー

ヌル合体を使用してPDFを作成

IronPDFというC#ライブラリは、PDF文書を作成および操作するために使用されます。 このライブラリは、フォーマット、テキスト処理、画像管理など、PDFと連携する機能を提供します。 「ヌル合体」は、IronPDFに固有のメソッドや機能ではなく、ライブラリ固有の操作ではありません。 ただし、C#コードでIronPDFや他のライブラリを操作している場合、C#言語で提供されているヌル合体演算子(??)を利用することができます。

例えば、IronPDFオブジェクトを操作しているときに、ヌルになる可能性のある値タイプやプロパティがヌルを返す場合に、ヌル合体演算子を使用してヌルの状況を処理したり、デフォルト値を提供したりできます。

次に示す例では、ヌル合体演算子がIronPDFとどのように使用できるかを示しています:

IronPDF(または他のライブラリ)は、ヌル値の条件演算子を管理する特別な機能やメソッドを提供しません;

using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
Imports IronPdf
Imports IronPdf.Pages

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim x? As Integer = Nothing

			' Use the null-coalescing operator to provide a default value if x is null
			Dim outputstr = $"square of <b>{x}</b> is <b>{Math.Sqrt(If(x, 30))}</b>"

			' Render the HTML string as a PDF using IronPDF
			Dim pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr)

			' Save the generated PDF to the file system
			pdfcreate.SaveAs("demo.pdf")

			' Wait for a key press to prevent the console from closing immediately
			Console.ReadKey()
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

むしろ、ヌル合体演算子の使用は、ヌル条件演算子を処理するための一般的なC#言語機能と概念に基づいています。 IronPDFの特徴と機能について詳しく知るには、IronPDFデモをご覧ください。 出力:

C# Null Coalescing (開発者向け説明): 図3 - 前の例の出力

要約すると、C#のヌル合体演算子(??)は、式と代入におけるヌル値の処理を簡単かつ効果的にする便利な機能です。

結論

この演算子は、開発者が値がヌルである可能性があるシナリオを処理するための明確な方法を提供することで、コードを簡略化します。 これにより、開発者はデフォルト値を指定したり、代わりのロジックを容易に実行することができます。 その適応性により、ヌルのテストを簡略化し、読みやすさを向上させ、コードをより効率的かつ効果的にします。 IronPDFは、永続ライセンス、アップグレードオプション、1年間のソフトウェアメンテナンス、30日間の返金保証を提供し、$799 Liteパッケージに含まれています。

ユーザーは、ウォーターマーク付きの評価期間中に、実際のアプリケーション状況で製品を30日間評価できます。 IronPDFの価格、ライセンス、試用版について詳しく知りたい方は、提供されたIronPDFライセンスをご覧ください。 Iron Software製品について詳しく知るには、Iron Softwareのウェブサイトをご覧ください。 To know more about Iron Software products, check the Iron Software website.

よくある質問

null 合体演算子は C# のコードの可読性をどのように向上させますか?

C# の null 合体演算子 `??` は、null チェックを単純化し、nullable 型に遭遇した際にデフォルト値を割り当てる簡潔な方法を提供することで、コードの可読性を向上させます。

C# の null 合体代入演算子の目的は何ですか?

null 合体代入演算子 `??=` は、左オペランドが null の場合に限り右オペランドの値を左オペランドに割り当てることで、nullable 型を扱う際にコードを簡素化します。

C# PDF アプリケーションで null 合体演算子を使用する例を提供できますか?

IronPDF を使用する C# PDF アプリケーションでは、ユーザーがファイル名を指定しない場合にデフォルトのファイル名を割り当てるために null 合体演算子を使用するかもしれません: string pdfName = userInputFileName ?? "default.pdf";

null 合体演算子を使用する際の一般的な落とし穴は何ですか?

一般的な落とし穴は、オペランド間の型の互換性を保証しないことです。これにより型変換エラーが発生する可能性があります。null 合体演算子を使用する際には、両方のオペランドが互換性のある型であることを確認することが極めて重要です。

null 合体演算子は C# における型の互換性とどのように関連していますか?

null 合体演算子は、双方のオペランドが互換性のある型であることを要求します。そうでない場合、C# は型推進の規則を適用して結果の型を決定します。これが慎重に管理されないと予期しない動作を引き起こす可能性があります。

nullable 型を扱う開発者にとって、null 合体演算子はなぜ有益ですか?

null 合体演算子は、nullable 型を効率的に処理し、デフォルト値を提供することで、冗長な条件ロジックの必要性を減少させるため、有益です。

開発者は、C# コードライブラリで null 合体演算子をどのように使用して null 値を管理することができますか?

開発者は、特定の値が null である可能性がある時にデフォルト値を割り当てて、null 参照例外が発生せずにアプリケーションがスムーズに動作し続けることを確保するために、C# コードライブラリで null 合体演算子を使用できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。