C#で配列のサイズを変更する方法とは?Array.Resizeメソッドの使い方を解説
C#では、配列を作成した後にそのサイズを直接変更することはできません。C#の配列は固定長であり、一度インスタンスを生成すると要素数を後から増減させることはできない仕様になっています。
ただし、Array.Resizeメソッドを使用すれば、既存の配列を指定したサイズの新しい配列に置き換えることができます。内部的には、指定されたサイズの新しい配列が生成され、元の配列の要素がそこへコピーされるため、見た目上は「配列のサイズを変更している」ように動作します。
基本的な使い方
char[] ch = new char[10]; ch[0] = 'a'; ch[1] = 'b'; // 配列をサイズ10に変更(refキーワードが必要) Array.Resize<char>(ref ch, 10);
Array.Resizeは、第1引数にrefキーワードを付けた配列変数を渡し、第2引数に新しいサイズを指定します。refを付けることで、メソッド内で新しく作成された配列が元の変数に代入し直されます。
サンプルコード
以下は、要素数5のchar型配列をArray.Resizeで要素数10に拡張し、新しく追加された領域にも値を設定する完全な例です。
using System;
class Program {
static void Main() {
// 要素数5のchar型配列を作成
char[] ch = new char[5];
ch[0] = 'a';
ch[1] = 'b';
ch[2] = 'c';
ch[3] = 'd';
ch[4] = 'e';
// 配列のサイズを10に変更
Array.Resize<char>(ref ch, 10);
// 新しく追加された要素に値を設定
ch[5] = 'f';
ch[6] = 'g';
ch[7] = 'h';
ch[8] = 'i';
ch[9] = 'j';
Console.WriteLine("新しい配列: " + new string(ch));
}
}
出力結果
新しい配列: abcdefghij
Array.Resize使用時の注意点
- 縮小も可能:新しいサイズを現在よりも小さく指定すると、末尾の要素は切り捨てられます。
- パフォーマンス面:呼び出すたびに新しい配列が作成され、全要素のコピーが行われるため、頻繁なサイズ変更には不向きです。
- 代替手段:要素数が動的に変化するケースでは、
List<T>のような可変長コレクションを使う方が効率的です。
-
C#の多次元配列とは?2次元配列の宣言方法と使い方を実例付きで解説
C#では、多次元配列を扱うことができます。int型の2次元配列は、次のように宣言します。int[] a;多次元配列の中で最もシンプルな形式が2次元配列です。2次元配列とは、1次元配列を要素として持つ配列、すなわち「配列の配列」のような構造をイメージすると分かりやすいでしょう。例えば、次の図は3行4列の2次元配列を表しています。多次元配列の使用例ここからは、実際にC#で多次元配列を操作するサンプルコードを見ていきましょう。以下の例では、5行2列の2次元配列を宣言・初期化し、入れ子になったforループですべての要素を出力します。using System; namespace ArrayApplic
-
Pythonで学ぶ畳み込み(Convolution)の基礎:画像から特徴を抽出する仕組みと実装
本記事では、Python 3.x(またはそれ以前のバージョン)における「畳み込み(Convolution)」について解説します。畳み込みは、ニューラルネットワークや画像の特徴抽出において中心的な役割を果たす基本的な操作です。推奨環境 − Jupyter Notebook前提条件 − NumPy および Matplotlib がインストール済みであることインストール方法必要なライブラリが未インストールの場合は、以下のコマンドで導入できます。>>> pip install numpy >>> pip install matplotlib畳み込みとは畳み込みとは、