- - PR -
型変換について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-23 14:44
VB.NETで
varParameterValues = New Object() {New Object() {60, 70, 80}, New Object() {"AAA", "BBB", "CCC"}, New Object() {"DDD", "EEE", "FFF"}} のような入れ子の配列がります。 varParameterValues(0)--->integer型 varParameterValues(1)--->string型 varParameterValues(2)--->string型 ように、行全体を型変換したいのですが どのようにしたら、よろしでしょうか? 基本的なことですが、よろしくお願いします。 | ||||||||
|
投稿日時: 2005-05-23 16:42
こんにちは、じゃんぬ です。
どういう経緯で、このようなデータが出来上がって、 どのように利用されるか判らないので何とも言えませんが... (何故に Object() なんだろう?)
型変換じゃないけど、varParameterValue を Array() としておけば CopyTo メソッドなんかで各配列にはコピーはできます。 ArrayList とか使った方が良いかもしれません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-05-23 17:54
ありがとうございます。
HELPを見てるんですが、 copytoの使い方がいまいちです。 質問した配列の例のように copytoを使って、 配列の入れ子をのつくり方を 教えてもらえないでしょうか? 入れ子にするのは、関数の引数を ひとつにするためです。 超基本的なことですいません。 | ||||||||
|
投稿日時: 2005-05-23 18:12
関数の引数を一つに纏めたいなら、もう少しVB.NETらしいやり様があるだろう?クラスに格納するとかさ・・・。 それから、むやみやたらにObjectにキャストするのは控えよう。コードの保守性を著しく下げるからね。メソッドを呼ぶために逐一キャストしなくてはならないし、キャストするために何型を格納したのか意識しなくてはならないし、どんな型でも格納しうるから後でバグの温床にもなる。
Array.CopyToは単に1次元配列のコピーを行うだけのメソッド。 したがって、コピー先となるインスタンスは事前に作成しておく必要がある。 つまり、CopyToを使う前に配列の入れ子を作っておく必要があるでしょうね。したがってCopyToを使って配列の入れ子を作ると言うのは、話に無理がある。 入れ子になっている配列にデータをコピーして初期化するためにCopyToを使うと言うなら、話も判るけど。 | ||||||||
|
投稿日時: 2005-05-23 18:22
こんにちは、じゃんぬ です。
やっぱり... (^-^;) 構造体とかクラスを使ってください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-05-23 18:51
アドバイスありがとうございます。
馬鹿の質問で申しわけありませんが、 構造体とかクラスで引数となりうる データ、2次元のデータで何行、何列の どういうデータ型か 関数が呼ばれて見ないと わからないのです。 それでも、構造体なりクラスで可能ですか? もし可能なら、クラスで実装する場合の キーワードを教えてもらえませんか? | ||||||||
|
投稿日時: 2005-05-23 19:02
諸農です。
コレクションとかリストとかをhas-aで 実装したクラスっていうのはダメですか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2005-05-23 20:00
こんな感じで一括変換できますが、配列の型を毎回調べないといけないですし intArray , strArray1 , strArray2 などは定義しておけないですし。。。 二次元データならDataTable使うとか、自作クラス使うか、検討したほうがよさそうですね。 [ メッセージ編集済み 編集者: burton999 編集日時 2005-05-23 20:01 ] |
1