DOBON.NET DOBON.NETプログラミング掲示板過去ログ

stringからchar配列へ代入について

環境/言語:[XP、C#、.NET Framework2.0]
分類:[.NET]

お世話になっております。

文字列をchar配列に配列の要素数を変えずに代入したいのですが、
どのようにすればよいでしょうか?
(その後char配列から別char配列にCopyToを使って代入しようとし
てるのですが、上記で配列の長さが変わってしまってCopyToがつか
えません。。。)

下記のように行うとcharの配列が"2"になります。。。
    class Program
    {
        static void Main(string[] args)
        {
            string str = "ab";
            char[] copy = new char[64];

            copy = str.ToCharArray();
            Console.WriteLine(copy);
            Console.WriteLine(copy.Length.ToString());
        }
    }

宜しくお願いします。
普通に Array.Copy を使えばよいのでは?
System.Array.Copy( str.ToCharArray(), copy, str.ToCharArray().Length );

MSDN
http://msdn2.microsoft.com/ja-jp/library/k4yx47a1.aspx
こんにちは。

まず、ToCharArray が何をしているのかを考えてみてください。
ToCharArray は文字列を文字配列に分解して返すメソッドです。ということは
copy に代入している時点で元の char[64] の copy は消えていることになりま
す。
「配列の長さが変わって」しまうのはそのためです。

CopyTo が使えないというのがどういうことかはわかりませんが、うまくコピー
されないというのであれば、ForEach などを使って1項目ずつコピーしていけば
いいのではないでしょうか。
str.ToCharArray().CopyTo(copy, 0);

でよかったですね。どうもcopyを主体に考えてしまっていました。

MSDN
http://msdn2.microsoft.com/ja-jp/library/06x742cw.aspx
Blueさん、ぽぴ王子さん
返信ありがとうございます。

Array.Copyメソッドで解決できました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板