C#の配列はゼロインデックス(0始まり)?仕組みをわかりやすく解説
C#の配列は0から始まるのか?
はい、C#の配列はゼロインデックス(0始まり)です。つまり、配列の最初の要素には必ずインデックス「0」が割り当てられます。
配列の長さとインデックスの関係を整理すると、以下のようになります。
- 配列が空の場合:要素数は0個で、配列の長さ(Length)も0です。
- インデックス0に1つの要素がある場合:配列の長さは1です。
- インデックス0と1に2つの要素がある場合:配列の長さは2です。
- インデックス0、1、2に3つの要素がある場合:配列の長さは3です。
このように、配列の最後の要素のインデックスは常に「配列の長さ − 1」になります。これはC#だけでなく、JavaやC++など多くのプログラミング言語に共通する仕様です。
配列がインデックス0から始まることを示すコード例
以下のコードは、forループのカウンタを0から開始することで、配列へのアクセスがインデックス0から行われることを示しています。
/* インデックス0から開始 */
for ( i = 0; i < 5; i++ ) {
n[ i ] = i + 5;
}ループ条件が i < 5 となっている点にも注目してください。配列の長さが5の場合、有効なインデックスは0〜4までなので、「5未満」という条件で範囲外アクセス(IndexOutOfRangeException)を防いでいます。
実行例
実際に次のサンプルプログラムを実行して、C#における配列のインデックスの挙動を確認してみましょう。
using System;
namespace ArrayApplication {
class MyArray {
static void Main(string[] args) {
int [] n = new int[5];
int i,j;
/* インデックス0から開始 */
for ( i = 0; i < 5; i++ ) {
n[ i ] = i + 5;
}
for (j = 0; j < 5; j++ ) {
Console.WriteLine("Element[{0}] = {1}", j, n[j]);
}
Console.ReadKey();
}
}
}実行結果
Element[0] = 5 Element[1] = 6 Element[2] = 7 Element[3] = 8 Element[4] = 9
この出力結果から、最初の要素が Element[0] として表示されていることがわかります。このように、C#の配列は必ずインデックス0から始まるため、ループ処理や要素へのアクセスを行う際には、開始値を0、終了条件を「配列の長さ未満」とするのが基本パターンとなります。
-
C言語の多次元配列とは?行優先・列優先の仕組みとサンプルコード
多次元配列とは配列とは、同種のデータ(ホモジニアスなデータ)をまとめて管理するための基本的なデータ構造です。配列の要素は、メモリ上の連続した領域に順番に配置されます。しかし実際のプログラミングでは、1次元の配列だけでは不十分なケースが少なくありません。例えば、表形式のデータや行列を扱う場合には、2次元配列やさらに多くの次元を持つ多次元配列を作成する必要があります。行優先方式と列優先方式多次元配列をメモリ上に表現する方法には、大きく分けて2つのアプローチがあります。ひとつは行優先(Row-Major)方式、もうひとつは列優先(Column-Major)方式です。r行 c列の2次元配列を考えてみま
-
C#の動的配列とは?ArrayListを使った動的な配列の作成方法を解説
動的配列とは、実行時にサイズを自由に拡張できる配列のことです。通常の静的配列は宣言時にサイズが固定されるため、後から要素数を変更することはできません。その点、動的配列は柔軟性が高く、多くの場面で有利になります。C#で配列を動的に作成するには、ArrayListコレクションを使用します。ArrayListは、個別にインデックスアクセスが可能なオブジェクトの順序付きコレクションを表します。動的なメモリ割り当てに対応しており、リストへの要素の追加(Add)、検索、並べ替え(Sort)なども簡単に行えます。C#で動的配列を作成するサンプルコード以下は、C#でArrayListを使って動的に配列を作成す