工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#の配列:効率的なデータ格納とアクセスの完全ガイド

配列は、同一型の要素を固定サイズの順序付きコレクションとして格納します。配列はデータのコレクションを格納するために使用されますが、同一型の変数が連続したメモリ位置に格納されているコレクションと考える方が便利なことが多いです。

number0, number1, ..., number99 のように個別の変数を宣言する代わりに、numbers という1つの配列変数を宣言し、numbers[0], numbers[1], ..., numbers[99] で個々の変数を表現します。配列の特定の要素にはインデックスでアクセスします。

すべての配列は連続したメモリ位置で構成されます。最も低いアドレスが最初の要素、最も高いアドレスが最後の要素に対応します。

C#の配列:効率的なデータ格納とアクセスの完全ガイド

配列の宣言

C#で配列を宣言するには、以下の構文を使用します。

datatype[] arrayName;

ここで、

宣言例

double[] balance;

配列の初期化

配列を宣言しただけではメモリ上で初期化されません。配列変数を初期化するときに値を割り当てます。配列は参照型なので、インスタンスを作成するにはnewキーワードを使用します。

double[] balance = new double[10];

配列への値の代入

インデックスを使用した個別代入

double[] balance = new double[10];
balance[0] = 4500.0;

宣言時の初期化

double[] balance = { 2340.0, 4523.69, 3421.0 };

サイズ指定付き初期化

int[] marks = new int[5] { 99, 98, 92, 97, 95 };

サイズ省略初期化

int[] marks = new int[] { 99, 98, 92, 97, 95 };

配列のコピー(参照のコピー)

int[] marks = new int[] { 99, 98, 92, 97, 95 };
int[] score = marks;  // 同じメモリ位置を参照

配列を作成すると、C#コンパイラは配列の型に応じて各要素をデフォルト値で暗黙的に初期化します。例えば、int配列のすべての要素は0で初期化されます。

配列要素へのアクセス

要素には、配列名に続いて角括弧でインデックスを指定してアクセスします。

double salary = balance[9];

宣言、代入、アクセスの総合例

using System;
namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[] n = new int[10];
            int i, j;
            
            // 配列要素の初期化
            for (i = 0; i < 10; i++) {
                n[i] = i + 100;
            }
            
            // 各要素の出力
            for (j = 0; j < 10; j++) {
                Console.WriteLine("Element[{0}] = {1}", j, n[j]);
            }
            Console.ReadKey();
        }
    }
}

実行結果:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

foreachループの使用

前の例ではforループで各要素にアクセスしましたが、foreachステートメントを使用して配列を反復処理することもできます。

using System;
namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[] n = new int[10];
            for (int i = 0; i < 10; i++) {
                n[i] = i + 100;
            }
            
            foreach (int j in n) {
                int i = j - 100;
                Console.WriteLine("Element[{0}] = {1}", i, j);
            }
            Console.ReadKey();
        }
    }
}

重要な配列関連概念

No.概念と説明
1多次元配列
C#は多次元配列をサポート。最も単純な形は2次元配列。
2ジャグ配列(配列の配列)
各行の長さが異なる多次元配列。
3配列の関数渡し
インデックスなしで配列名を指定して、配列への参照を関数に渡せる。
4可変長パラメータ(params配列)
不明な数のパラメータを関数に渡すために使用。
5Arrayクラス
System名前空間で定義。すべての配列の基底クラスで、配列操作のプロパティとメソッドを提供。

多次元配列の例

// 2次元配列(3行4列)
int[,] matrix = new int[3, 4] {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

// アクセス
int value = matrix[1, 2];  // 7

// 全要素走査
for (int i = 0; i < matrix.GetLength(0); i++) {
    for (int j = 0; j < matrix.GetLength(1); j++) {
        Console.Write(matrix[i, j] + " ");
    }
    Console.WriteLine();
}

ジャグ配列の例

// ジャグ配列(各行の長さが異なる)
int[][] jagged = new int[3][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5, 6 };
jagged[2] = new int[] { 7, 8, 9 };

// アクセス
Console.WriteLine(jagged[1][2]);  // 5

Arrayクラスの主なメソッド/プロパティ

ベストプラクティス

C言語

  1. ボールグリッドアレイ(BGA)完全ガイド:高密度PCB技術のすべて
  2. C# 配列をマスターする:宣言、初期化、操作
  3. C# ジャグ配列をマスターする:宣言、初期化、アクセス
  4. C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
  5. C言語で1次元・2次元配列を関数に渡す方法 – 実践ガイド
  6. C言語における配列とポインタの関係を理解する
  7. C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
  8. C++動的配列の確保をマスター:コード例付き実践ガイド
  9. MATLAB:多次元配列と特殊配列をマスターする
  10. Java配列コピー技法:包括的ガイド
  11. Java配列チュートリアル:宣言、生成、初期化の完全ガイド