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

C#における「初期化」と「代入」の違いをわかりやすく解説

C#プログラミングにおいて、「初期化」と「値の代入(アサイン)」は似ているようで異なる概念です。この記事では、両者の違いを配列を例にしてわかりやすく解説します。

配列の宣言

まず、配列を宣言するコードを見てみましょう。

int[] n; // 宣言

このように宣言しただけでは、配列はメモリ上でまだ使用可能な状態になっていません。宣言はあくまで「配列変数の存在」をコンパイラに伝えるだけです。

初期化とは

配列変数を初期化すると、メモリ上に実体が確保され、そこへ値を代入できるようになります。

重要なポイントとして、C#において配列は参照型です。そのため、newキーワードを使って明示的にインスタンスを生成する必要があります。

int[] n = new int[10]; // 初期化

値の代入とは

初期化された配列に対して、実際の値を設定するのが代入です。個々の配列要素には、インデックス番号(添字)を指定してアクセスします。

n[0] = 100;
n[1] = 200;

インデックスは0から始まるため、最初の要素はn[0]、2番目の要素はn[1]となります。

宣言・初期化・代入を1行で行う

C#では、これらの一連の操作を1行にまとめて記述することもできます。

int[] n = new int[10] {100, 200, 300, 400, 500};

このように書くことで、コードが簡潔になり、可読性も向上します。なお、初期化子(波括弧内の値)を指定する場合は、要素数を省略して次のように書くことも可能です。

int[] n = new int[] {100, 200, 300, 400, 500};
// さらに省略して
int[] n = {100, 200, 300, 400, 500};

既定値による自動初期化

newキーワードで配列を作成すると、C#コンパイラは配列の型に応じて、各要素を自動的に既定値で初期化します。

  • intなどの数値型 → 0
  • bool型 → false
  • 参照型(クラスなど)→ null

例えば、int型の配列の場合、すべての要素は自動的に0に初期化されます。この仕組みにより、初期化直後の配列に対して未定義の値が残ることはありません。

まとめ

「宣言」は変数の存在を示すだけであり、「初期化」はnewによってメモリ上に実体を確保すること、「代入」は確保された要素に具体的な値を設定することです。この違いを理解しておくと、NullReferenceExceptionなどのエラーを防ぎ、より安全なコードを書けるようになります。

  1. C#の配列とリスト(List)の違いとは?特徴と基本的な使い方を解説

    C#における配列(Array)とリスト(List<T>)は、どちらも複数のデータをまとめて扱うためのコレクションですが、その性質には重要な違いがあります。 配列とリストの主な違い 配列は、生成時にサイズが固定される、同じ型の要素を順番に格納するコレクションです。一度作成した後は要素数を変更できません。 一方、Listはジェネリックコレクションであり、要素の追加や削除に応じてサイズが自動的に拡張・縮小します。この柔軟性が最大の特徴です。 項目配列List<T> サイズ固定可変(動的) 要素の追加不可(再作成が必要)Addメソッドで可能 宣言方法型[] 変数名Lis

  2. Pythonのリストと配列(array)の違いとは?使い分けのポイントを解説

    Pythonのリストと配列、何が違うのか?Pythonでデータを扱う際、「リスト(list)」と「配列(array.array)」はどちらもよく使われるデータ構造ですが、それぞれ特徴が大きく異なります。この記事では、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list):柔軟性が高い万能型Pythonのリストは非常に柔軟なデータ構造です。最大の特徴は、異なる型のデータを混在させて格納できる点にあります。例えば、以下のように整数・文字列・ネストしたリストなどを自由に組み合わせられます。[1, a, [1, 2], string]また、リストへの要素追加(append)は償却定