2021年12月31日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 983 count

配列の初期化構文: 手短に配列の中味をセットせよ

Written By: 川俣 晶連絡先

この章のテーマ §

 配列の初期化構文を学習します。複数の要素にまとめて値をセットできます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, 配列の基礎, 条件演算子, int型, for文, foreach文,

解説 §

 配列は作成されると通常、0または0に対応する値またはnull参照で初期化されます。

 しかし、特定の値が入った状態で配列を作成したい場合もあります。

 その場合は、値を列挙して配列を作成します。

 やり方は複数あります。

 サンプルソースのCASE1のやり方は、new int[] { 2, 3, 5 };のようにnew演算子の後ろに波括弧で囲って初期値を列挙する方法です。この場合、確保する配列の要素数を省略できます。列挙された初期値の数から配列の大きさが分かるからです。

 サンプルソースのCASE2のやり方は、new演算子を省略してint[] array2 = { 2, 3, 5 };のように初期化する値として初期値のリストを付けてしまう方法です。この方法は短く書けて便利ですが、配列を変数として確保するばあいにしか使えません。varで変数を宣言する場合にも使えません。初期化リストだけでは配列の型が決まらないためです。

 サンプルソースのCASE3のやり方は、多次元配列を初期化する場合です。多次元配列でも初期化構文は使用できます。

罠の数々 §

  • この機能は便利だが、要素数が増えるとすぐ破綻する。5個や10個ぐらいの値を列挙するのなら良いが、100個、1000個、それ以上になると、ソースコードには書き切れない。初期化構文は使用せず、ファイルなどから読み込むように作成する方が楽かも知れない
  • 列挙する値は、その型である必要はない。たとえば、object[]の配列をstring型の値を列挙して初期化しても問題はない (逆にいえば、列挙された値から型は決められない)

参考リンク §

配列 (C# プログラミング ガイド)

サンプルソース: arrayInitializer §

Console.WriteLine("CASE1");

int[] array1 = new int[] { 2, 3, 5 };

foreach (var item in array1) Console.Write($"{item} ");

Console.WriteLine();

Console.WriteLine("CASE2");

int[] array2 = { 2, 3, 5 };

foreach (var item in array2) Console.Write($"{item} ");

Console.WriteLine();

Console.WriteLine("CASE3");

int[,] array3 = { { 2, 3, 5 }, { 7, 11, 13 } };

for (int i = 0; i < array3.GetLength(0); i++)

{

    for (int j = 0; j < array3.GetLength(1); j++)

    {

        Console.Write($"{array3[i,j]} ");

    }

    Console.WriteLine();

}

実行結果 §

CASE1

2 3 5

CASE2

2 3 5

CASE3

2 3 5

7 11 13

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 値を何も指定しない場合、int型の配列の要素は0で初期化されるが参照型の配列の要素はnullで初期化される。

 以下の場合、0とnullのどちらで初期化されるだろうか。

 以下のプログラムの実行結果を予測してみよう。(選択肢にはTrueとFalseの部分のみ列挙)

int?[] a = new int? [1];

Console.WriteLine($"a[0] == null: {a[0] == null}");

Console.WriteLine($"a[0] == 0: {a[0] == 0}");

  1. False False
  2. True False
  3. False True
  4. True True
  5. 実行時に例外が起きる

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
01月
02日
メソッド呼び出し: メソッドを呼び出す2つの方法
3days 0 count
total 946 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
29日
ボックス化とnull 許容値型、null 許容参照型: 型にまつわるハテナの嵐
3days 0 count
total 1388 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20211231105944
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.