C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#での配列に配列をコピーする方法


(過去ログ 86 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■51336 / inTopicNo.1)  C#での配列に配列をコピーする方法
  
□投稿者/ Hero (1回)-(2010/07/02(Fri) 14:32:15)

分類:[C#] 

VC#
.NET Framework 4
WindowsXP Sp3

いつも楽しく拝見させて頂いております。
最近になってVB6→VB.NET(少し)→現在C#にトライしている初心者です。
分からないことだらけで、試行錯誤しながら頑張っています。
今回、配列の配列(ジャグ配列)についてお伺いさせていただきます。

下はVB.NETのジャグ配列(模擬)です。

        Dim parArray() As Object
        Dim cldArray(3) As Object
        Dim parNum ,cldNum As Integer

        '大項目要素数分ループ
        For parNum = 0 To UBound(DataArray)  '←UBound(DataArray)の値は仮に4として下さい。
            '小項目要素数分ループ
            For cldNum = 0 To UBound(cldArray)
                '小項目要素を格納
                cldArray(cldNum) = "小項目" & cldNum
            Next cldNum

            '配列拡大
            ReDim Preserve parArray(parNum)
            '配列に配列をコピー
            parArray(parNum) = cldArray.Clone
        Next parNum

このVB.NETで記述したものをC#に移植しようと思い下を作成しましたが、
最後の「配列に配列をコピー」ヶ所で、
『型 'object' を 'object[]' に暗黙的に変換できません。明示的な変換が存在します。
(cast が不足していないかどうかを確認してください)』とエラー表示が出てしまいます。

        int parNum = 0;
        int cldNum = 0;
        object[][] parArray=new object [0][];
        object[] cldArray= new object[3];

        //大項目要素数分ループ
        for(parNum = 0; parNum < DataArray.Length; ++parNum)   //←DataArray.Lengthの値は仮に4として下さい。
        {
            //小項目要素数分ループ
            for(cldNum = 0; cldNum < cldArray.Length; ++cldNum)
            {
                //小項目要素を格納
                cldArray[cldNum] = "小項目" + cldNum;
            }
            //配列拡大
            Array.Resize(ref parArray, parNum+1);
            //配列に配列をコピー
            parArray[parNum] = cldArray.Clone();
        }

どうかご教示いただけますようにお願い致します。

引用返信 編集キー/
■51338 / inTopicNo.2)  Re[1]: C#での配列に配列をコピーする方法
□投稿者/ こくぶん (63回)-(2010/07/02(Fri) 14:46:49)
こくぶん さんの Web サイト
No51336 (Hero さん) に返信

> //配列に配列をコピー
> parArray[parNum] = cldArray.Clone();

object.Clone() の返却値は object 型なので、明示的な型変換が必要です。(メッセージのままですが)

parArray[parNum] = (object[])cldArray.Clone();

引用返信 編集キー/
■51342 / inTopicNo.3)  Re[2]: C#での配列に配列をコピーする方法
□投稿者/ Hero (2回)-(2010/07/02(Fri) 15:37:13)
No51338 (こくぶん さん) に返信


> parArray[parNum] = (object[])cldArray.Clone();
こくぶんさん、どうも速攻で明快なご回答をありがとうございました。
早速、実装したところ、思うような配列データになりました(*^▽^*)〃

> object.Clone() の返却値は object 型なので、明示的な型変換が必要です。(メッセージのままですが)
いやいや、お恥ずかしい(^^;A
メッセージの言うていることはごもっともなのですが、.NETを始めて日が浅いもので対処法が全く思い浮かばず、
質問させて頂いた次第ですorz 申し訳ございません〜〜
本当にご教示いただいて感謝です。これからも頑張って行きたいと思います。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -