C# の Null 許容文字列

WBOY
リリース: 2024-09-03 15:22:04
オリジナル
630 人が閲覧しました

C#では、変数には値型と参照型の2種類が存在します。値型変数には null を割り当てることができませんが、参照型変数には null を割り当てることができます。文字列は参照型であるため、null になる可能性があります。このトピックでは、C# の Null 許容文字列について学習します。

値の型に null を割り当てるには、Nullable を使用する必要があります。構造体。 Null 許容型は値型でのみ使用でき、参照型では使用できません。したがって、文字列で nullable を使用することはできません。 null 値を保持する参照型の代わりに nullable を格納できます。

説明付き構文

文字列変数に null を割り当てる構文は次のとおりです。

string str = null;
ログイン後にコピー

ここで、str は文字列型の変数で、「null」は null 値を指定するために使用されるキーワードです。上記のステートメントでは、string は参照型であり、null 値を保持できるため、string に直接 null を代入しています。

Nullable struct は値の型に null を割り当てます。その構文は次のとおりです:

Nullable<dataType> variableName = null;
ログイン後にコピー

Nullable 型を使用する別の方法は次のとおりです。

dataType? variableName = null;
ログイン後にコピー

dataType は、上記 2 つのステートメントの任意の値型のデータ型であり、variableName は変数に指定されたユーザー定義の名前です。

C# で Null 許容型と Null 文字列を扱う方法?

C# の Null 許容型は、int、float、bool 型などの値型変数に null 値を割り当てます。これは、これらの変数には null 値を格納できないためです。一方、nullable は null 値を直接格納できるため、string またはその他の参照型変数では使用できません。

Nullable 型は、構造体 System.Nullable のインスタンスにすぎません。ここで、T はデータ型の値の型を表します。たとえば、null 許容型 float では、「true」、「false」、「null」を格納できます。これは、以下のステートメントで理解できます。

//bool

の nullable に null を格納できるため、以下のステートメントは有効です
Nullable<bool> boolVal = null;
ログイン後にコピー

//bool 型の変数に null を格納できないため、以下のステートメントは無効です

bool boolVal = null;
ログイン後にコピー

上記のステートメントを使用すると、「null は非 null 値型であるため、null を bool に変換できません。」というエラーが表示されます。

null 許容型を作成するもう 1 つの方法は、以下に示すように「?」演算子を使用することです。

bool? boolVal = null;
ログイン後にコピー

ここで、null 許容型の値にアクセスするには、GetValueOrDefault() メソッドを使用する必要があります。このメソッドを使用すると、値が null でない場合に、元の割り当て値を取得できます。一方、値が null の場合は、デフォルト値のゼロが取得されます。

これとは別に、Nullable.HasValue を使用して、オブジェクトに値が割り当てられているかどうかを確認できます。オブジェクトに値が割り当てられている場合、オブジェクトに値が含まれていない場合は true を返します。

null 許容型を「var」とともに使用することはできません。また、null 許容型をネストすることもできません。コンパイル時エラーが発生します。

ここで、C# の null 文字列について話しましょう。 C# では null を文字列に直接代入したり、「string.」を使用して文字列を代入したりできます。 「Empty」読み取り専用フィールド。文字列が空であることを表します。

null 文字列ではメソッドを呼び出すことはできず、null 文字列では文字列プロパティを使用できませんが、空の文字列では同じことができます。たとえば、文字列を使用して空の文字列の長さをチェックするとします。 Length プロパティを使用すると、結果はゼロとして返されますが、NULL 文字列の長さをチェックすると、「System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」というランタイム例外が発生します。 NULL 文字列に対して文字列メソッドを呼び出そうとすると、同じ例外が発生します。これは、NULL 文字列は System のインスタンスではないためです。弦。これは、次のステートメントを利用して理解できます:

空の文字列の例:

string str = string.Empty;
int a = str.Length; //the result of this statement will be zero
ログイン後にコピー

ヌル文字列の例:

string str = null;
int a = str.Length; //this statement will give NullReferenceException
ログイン後にコピー

C# の Null 許容文字列の例

さまざまな例を以下に示します:

例 #1

null 許容型の作成方法を示す例。

コード:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
try
{
//defining nullable type for int
Nullable<int> intVal1 = null;
int result1;
Nullable<int> intVal2 = 53;
int result2;
//using GetValueOrDefault()
//to get value from nullable type
result1 = intVal1.GetValueOrDefault();
result2 = intVal2.GetValueOrDefault();
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch(Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}
}
ログイン後にコピー

出力:

C# の Null 許容文字列

例 #2

たとえば、「?」演算子を使用して null 許容型を作成し、HasValue を使用して値が含まれているかどうかをチェックします。

コード:

using System;
public class Program
{
public static void Main()
{
try
{
//defining nullable type
//using '?' operator
int? intVal1 = null;
bool result1;
int? intVal2 = 53;
bool result2;
//using HasValue to check
// if the object has been assigned a value or not
result1 = intVal1.HasValue;
result2 = intVal2.HasValue;
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}
ログイン後にコピー

出力:

C# の Null 許容文字列

例 #3

IsNullOrEmpty() メソッドを使用して、文字列が null、空、または値が含まれているかどうかを確認する例。

コード:

using System;
public class Program
{
public static void Main()
{
string str1 = null;
string str2 = string.Empty;
string str3 = "Learning C#";
Console.WriteLine("str1 is null or empty: {0}", string.IsNullOrEmpty(str1));
Console.WriteLine("str2 is null or empty: {0}", string.IsNullOrEmpty(str2));
Console.WriteLine("str3 is null or empty: {0}", string.IsNullOrEmpty(str3));
Console.ReadLine();
}
}
ログイン後にコピー

出力:

C# の Null 許容文字列

結論

C# では、int、float、bool、double 型などの値型変数は null 値を格納できませんが、string などの参照型変数は null 値を格納できます。 Null 値を値型変数に格納するには、Nullable を使用できます。構造体

以上がC# の Null 許容文字列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!