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

C#のIsNullOrEmpty()メソッドとは?使い方を解説

C#のIsNullOrEmpty()メソッドは、指定された文字列がnullまたは空文字列("")であるかどうかを判定するために使用される静的メソッドです。文字列が有効な値を持っているかを確認する際に非常に便利で、NullReferenceExceptionの発生を防ぐためのガード処理としても広く活用されています。

構文

構文は以下のとおりです。

public static bool IsNullOrEmpty (string val);

上記の構文において、引数 val は判定対象となる文字列です。戻り値は bool 型で、文字列が null または空文字列の場合は true、それ以外の場合は false を返します。

まず、通常の文字列と空白文字を含む文字列を判定する例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        string str1 = "Amit";
        string str2 = " ";
        Console.WriteLine("string1はnullまたは空文字列か? = "+string.IsNullOrEmpty(str1));
        Console.WriteLine("string2はnullまたは空文字列か? = "+string.IsNullOrEmpty(str2));
    }
}

出力

このプログラムを実行すると、以下のような結果が出力されます。

string1はnullまたは空文字列か? = False
string2はnullまたは空文字列か? = False

" " のように半角スペースが含まれる文字列は「空文字列」とは見なされないため、結果は False になります。空白のみの文字列も1文字として扱われる点に注意してください。

次に、nullString.Empty を判定する例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        string str1 = null;
        string str2 = String.Empty;
        Console.WriteLine("string1はnullまたは空文字列か? = "+string.IsNullOrEmpty(str1));
        Console.WriteLine("string2はnullまたは空文字列か? = "+string.IsNullOrEmpty(str2));
    }
}

出力

このプログラムを実行すると、以下のような結果が出力されます。

string1はnullまたは空文字列か? = True
string2はnullまたは空文字列か? = True

nullString.Empty(空文字列 "")もどちらも true と判定されることがわかります。なお、空白文字までまとめてチェックしたい場合は、C# 4.0以降で利用可能な String.IsNullOrWhiteSpace() メソッドを使うとより便利です。

  1. C++でNULLクラスポインタ経由でクラスメソッドを呼び出す方法

    はじめにC++では、NULLクラスポインタを介してクラスのメンバ関数(メソッド)を呼び出すことができます。一見奇妙な動作に思えますが、特定の条件下ではコンパイル・実行ともに可能です。注意: これは未定義動作(undefined behavior)であり、プログラムの正常な実行は一切保証されません。実際の結果は、使用するコンパイラや環境によって異なります。実務のコードでは絶対に避けるべき書き方ですので、ここではC++の内部的な仕組みを理解するための参考として読んでください。サンプルプログラムNULLポインタ経由でメンバ関数を呼び出すプログラムの例を以下に示します。#include <ios

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

    ジェネリック(Generics)を使うと、フィールド、メソッド、パラメータなどの型をプレースホルダー(型パラメータ)として持つクラスを定義できます。これらのプレースホルダーは、コンパイル時に具体的な型へと置き換えられます。ジェネリックは山括弧 <> を使って定義するのが基本です。C#のコレクションにおける主な制限の一つは、効果的な型チェックが行えないことです。C#ではすべてのクラスがobject基底クラスから派生しているため、コレクションには原理的にどんなオブジェクトでも格納できてしまいます。さらに、通常のメソッドとは異なり、ジェネリックメソッドから単純にnullを返すことはできま