【C#入門】配列の要素数を取得・変更する方法(Length、Resize)

こんにちは!
フリーランス(エンジニア/ライター)のイシキです。

この記事では、配列の要素数を取得・変更する方法について

  • 配列の要素数(サイズ)とは
  • Lengthプロパティで要素数を取得する方法
  • GetLengthメソッドで要素数を取得する方法</li>

といった基本的な内容から
  • Resizeメソッドで要素数の上限を変更する方法
  • Emptyメソッドで要素数0の配列を取得する

  • など応用的な使い方についても解説していきます。

    配列は繰り返し構文と相性がよいので、よく要素数で繰り返しを行いますよね。その時に要素数を直接、数字で記入してしまうといくつか問題があります。

    例えば、数字なのでなぜその数なのか分かりづらいです。他にも、配列の要素数を変更した場合に修正が必要になります。

    そのような問題を回避するために、この記事では配列の要素数の取得や変更について、例を交えながら詳しく解説していきます。

    配列の要素数(サイズ)とは

    配列は、同じ型の複数のデータを一つのかたまりとして扱うためのものです。

    配列の基本的な使い方はこちらの記事をチェックしてみてください。

    例えば、配列には次のようなものがあります。

    この配列は、0から4までの5つの数を持っています。このとき、これらの数を配列の要素といい、配列の要素数は5になります。

    例えば、次のように繰り返し処理などで要素数である5を使用することがありますね。

    ここでは、要素数を意味する5ですが、そうでない場合もありますよね。ただ、5と書かれているだけでは意味が通じないことがあるのです。

    また、次のように配列の要素を減らした場合を考えてみましょう。

    要素数が4になるため、繰り返す回数も修正されています。このように1つ配列を変更するために、2ヵ所以上の修正を行うのは効率的ではありません。

    そのため、C#では配列の要素数を取得するプロパティやメソッドが用意されています。

    Lengthプロパティで要素数を取得する方法

    Lengthプロパティで要素数を取得する方法は、次の通りです。

    次のサンプルコードは、配列の全ての要素を出力しています。

    [実行結果]

    数字で繰り返す場合と違い、Lengthという名前から配列の要素数の分だけ繰り返していることが分かります。

    また、配列の定義を変更したとしても、常にすべての要素が出力されます。実行結果を見ても、すべての要素が出力されていることが確認できます。

    GetLengthメソッドで要素数を取得する方法

    Lengthプロパティを多次元配列で使用した場合、全ての要素数を返します。

    そこで、ある次元の要素数のみを取得したい場合、次のようにGetLengthメソッドで要素数を取得する方法を使用します。

    例えば、2次元配列で考えると次のサンプルコードのようになります。

    [実行結果]

    今回の場合、「numberTable.GetLength(0)」が1次元の要素数である2を返します。そして、「numberTable.GetLength(1)」が2次元の要素数である3を返します。

    実行結果からもこのことが確認できます。

    Resizeメソッドで要素数の上限を変更する方法

    Resizeメソッドで要素数の上限を変更する方法は、次の通りです。

    refキーワードは、引数を「参照渡し」で扱う場合に使います。refキーワードはメソッドの定義と、呼び出しの両方で指定します。

    これまで行ってきたキーワードを指定しない引数の指定方法は「値渡し」といいます。「参照渡し」は「値渡し」とは違い、メソッド内部での変更が呼び出し元に反映されます。

    Resizeメソッドは、配列の要素数の上限を変更して、呼び出し元に反映する必要があるのでrefキーワードを使用しています。

    それでは、実際にサンプルコードを見てみましょう。

    [実行結果]

    要素数の上限を2倍にするため「Array.Resize(ref numbers, numbers.Length * 2);」としています。

    実行結果から、要素数の上限が変更され、2倍になっていることが確認できます。

    Emptyメソッドで要素数0の配列を取得する

    要素数0の配列を取得する方法は次の通りです。

    [実行結果]

    実行結果から要素数0の配列を取得できていることが確認できます。Emptyメソッドは「.NET Framework」4.6以降のバージョンで使用可能です。

    [.NET Frameworkのバージョン確認] cs_array_length00

    使用できない方は、メニューバーの「プロジェクト→プロパティ」とクリックし、アプリケーションタブのターゲットフレームワークを確認してください。

    まとめ

    いかがでしたか?

    今回は、配列の要素数を取得・変更する方法について解説しました。

    配列を使うと自然にその要素数を使う機会も増えるでしょう。LengthプロパティGetLengthメソッドで可読性や保守性を高められるので覚えておくといいですね。

    もし、配列の要素数を取得・変更する機会があれば、この記事を思い出してみてください!

    LINEで送る
    Pocket

    最短でエンジニアを目指すなら侍エンジニア塾

    cta_under_bnr

    侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

    あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

    無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

    無料体験レッスンの詳細はこちら

    書いた人

    イシキ マコト

    イシキ マコト

    フリーランスのエンジニアです。
    最近では、プログラミング関連の記事を作成するライターとしても活動しています。

    趣味と業務の両方でプログラミング言語をいくつも学んできたので
    その経験を活かして分かりやすい記事を作成できればと考えています。

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説