Null Reference Basics
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部 — レッスン 31/66。
C# では、null 参照はオブジェクトの不在を表します。null 値の扱い方を理解することは、堅牢なコードを書くために不可欠です。
値を割り当てずに参照型の変数(例: string)を宣言する:
string name = null;変数 'name' は現在 null 参照を保持しており、メモリ内のどのオブジェクトにも指していないことを意味します。
チェックせずに null 参照を使用しようとすると、ランタイム エラーが発生します:
string name = null;
// This will throw a NullReferenceException
int length = name.Length;参照を使用する前に、それが null かどうかをチェックできます:
string name = null;
if (name != null)
{
// Safe to use name here
int length = name.Length;
}変数に null 以外の値を代入することもできます:
string name = null;
name = "John";
// Now it's safe to use name
int length = name.Length; // length will be 4チャレンジ
簡単ProcessName という名前のメソッドを作成し、name という名前の文字列パラメータを受け取ってください。このメソッドは次のことを行います:
- name が null かどうかをチェックします
- name が null の場合、「Name is null」と出力します
- name が null でない場合、「Name length is X」と出力します(ここで X は name の長さです)
チートシート
C# では、null 参照はオブジェクトの不在を表します。
null で参照型変数を宣言します:
string name = null;null 参照をチェックせずに使用すると、実行時エラーが発生します:
string name = null;
// NullReferenceException がスローされます
int length = name.Length;使用前に null をチェックします:
string name = null;
if (name != null)
{
// ここで name を安全に使用できます
int length = name.Length;
}使用を安全にするために、非 null 値を割り当てます:
string name = null;
name = "John";
int length = name.Length; // length は 4 になります自分で試してみよう
using System;
class Program
{
public static void ProcessName(string name)
{
// ここにコードを書いてください
}
static void Main(string[] args)
{
string input = Console.ReadLine();
// "null" 文字列を実際の null に変換
string name = input.ToLower() == "null" ? null : input;
ProcessName(name);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety