Nullable値型の基本
int?、double?を宣言し、Nullable について理解します。
「Nullable値型の基本」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
値型はnullにできません
通常、intは常に数値を保持し、nullになることはありません。しかし、測定値がない場合など、「値がない」ことを表したい場合があります。
using System;
class Program {
static void Main() {
int count = 0;
Console.WriteLine(count);
}
}?によるnull許容型
値型の後ろに?を付けると、null許容型になります。int?は任意のint値またはnullを保持できます。
using System;
class Program {
static void Main() {
int? maybe = null;
Console.WriteLine(maybe.HasValue);
maybe = 42;
Console.WriteLine(maybe);
}
}その他のnull許容型
どの値型でもnull許容型にできます。double?、bool?、DateTime?などがあります。
using System;
class Program {
static void Main() {
double? temp = null;
bool? flag = true;
Console.WriteLine(temp.HasValue + " " + flag);
}
}Nullable<T>の完全な表記
int?は、structであるNullable<int>の省略形にすぎません。どちらもまったく同じ型としてコンパイルされます。
using System;
class Program {
static void Main() {
Nullable<int> a = 10;
int? b = 10;
Console.WriteLine(a == b);
}
}nullの代入
null許容変数にはnullを自由に代入でき、後から実際の値を再代入できます。
using System;
class Program {
static void Main() {
int? id = 100;
Console.WriteLine(id);
id = null;
Console.WriteLine(id.HasValue);
}
}nullのnull許容値を出力する
nullであるnull許容値を出力すると、「null」という単語ではなく空の文字列が出力されます。
using System;
class Program {
static void Main() {
int? value = null;
Console.WriteLine("[" + value + "]");
}
}null許容型への暗黙的な変換
通常のintは、すべてのintが有効なnull許容intであるため、自動的にint?へ変換されます。
using System;
class Program {
static void Main() {
int x = 7;
int? y = x;
Console.WriteLine(y);
}
}メソッドの戻り値でのnull許容型
メソッドはnull許容型を返すことで、「値が見つかった」場合と「何も見つからなかった」場合を表せます。
using System;
class Program {
static int? FindEven(int[] nums) {
foreach (int n in nums)
if (n % 2 == 0) return n;
return null;
}
static void Main() {
Console.WriteLine(FindEven(new[] {1, 3, 4}));
}
}null許容値の比較
等価比較は期待どおりに機能します。2つのnull許容値は、両方がnullである場合、または両方が同じ値を保持している場合に等しくなります。
using System;
class Program {
static void Main() {
int? a = null;
int? b = null;
Console.WriteLine(a == b);
int? c = 5;
Console.WriteLine(c == 5);
}
}null許容型を使う理由
null許容値型を使うと、データベースでNULLを許可する列や、ユーザーが空欄のままにしたフィールドなど、オプションのデータを自然に表現できます。
using System;
class Program {
static void Main() {
int? userAge = null;
string msg = userAge.HasValue ? "Age set" : "Age unknown";
Console.WriteLine(msg);
}
}Nullableはstructです
Nullable<T>自体が値型であるため、null許容変数はnullにできる場合でも参照型ではありません。
using System;
class Program {
static void Main() {
int? n = 3;
Console.WriteLine(n.GetType().Name);
}
}理解度チェック
null許容値型についての理解度を確認します。
まとめ
intのような値型は、デフォルトではnullにできません。?を追加するとnull許容型(int?)が作成され、これはNullable<T>の省略形です。
null許容型を使うと、欠落したデータやオプションのデータを表現できます。基になる型から暗黙的に変換でき、null許容型自体もstructです。
よくある質問
「Nullable値型の基本」レッスンは無料ですか?
はい。「Nullable値型の基本」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「Nullable値型の基本」で何を学びますか?
int?、double?を宣言し、Nullable について理解します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Nullable値型の基本」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Nullable値型の基本
- HasValueとValueプロパティ
- Null合体演算子
- 計算におけるNullable