- PR -

C#で動的配列の削除

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2006-10-28 00:58
こんばんは

検索して調べると動的配列で要素数を増やすのはあるのですが減らす
うまい(whileでぐるぐるまわしたりすればできますが)、方法が見つかりません。

たとえば
hairetu[0]="零";
hairetu[1]="一";
hairetu[2]="二";
hairetu[3]="三";
hairetu[4]="四";
hairetu[5]="五";
hairetu[6]="六";
hairetu[7]="七";
hairetu[8]="八";
hairetu[9]="九";

   ↓

hairetu[0]="零";
hairetu[1]="一";
hairetu[2]="二";
hairetu[3]="三";
hairetu[4]="五";
hairetu[5]="六";
hairetu[6]="七";
hairetu[7]="八";
hairetu[8]="九";

と、うまい具合にできる方法があれば教えていただければ幸いです。
と、聞きながら力技しかないのかなと思っております。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2006-10-28 01:30
そういう作業には、配列ではなく、コレクションクラス(.NET Framework 2.0ならList<T>クラス、それ以前なら、ArrayListクラスを使うか、CollectionBaseを派生させた自作コレクションクラスなど。)を使用しましょう。

コード:
string[] numberArray = new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

List<string> numberList = new List<string>(numberArray);
numberList.RemoveAt(4);
numberArray = numberList.ToArray();




< 追記 >
そもそも、動的な変更を行うことが前提ならば、元々コレクションクラスとして用意した方が良いかもしれません。(なんでもかんでもコレクションクラスにすればいいと言うわけでもありません。)


[ メッセージ編集済み 編集者: よこけん 編集日時 2006-10-28 01:56 ]
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2006-10-28 02:13
そんな便利機能が加わってたのですね。
ありがとうございます。
知らないで無駄なプログラムを組むところでした。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2006-12-25 00:10
以前はお世話になりました。

あれからListを有効活用させていただいております。

色々やっていて、また、壁に当たりまして
動的配列の中に普通の配列を入れて
多次元配列にしたい場合の宣言の仕方が色々工夫してやってはいるのですが
見つからないです。

ご存知であれば教えていただけるとうれしいです。

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-12-25 00:11 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-25 00:31
引用:

未記入さんの書き込み (2006-12-25 00:10) より:

色々やっていて、また、壁に当たりまして動的配列の中に普通の配列を入れて多次元配列にしたい場合の宣言の仕方が色々工夫してやってはいるのですが見つからないです。


やることは変わらないです。
多次元配列よりか、多段階配列として考えた方が良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2006-12-25 21:51
やっと見つけました。

List<byte []> bb = new List<byte []>();

こんなかんじで、配列を増やすときに

bb.Add(new byte[1024]);

ってな感じですね。

意外にすっきりした形でしたが、見つけるまで苦労しました。
ふー、じかれた。
1

スキルアップ/キャリアアップ(JOB@IT)