質問: new string(Encoding.Unicode.GetString(SendBuffer).ToCharArray()); Console.WriteLine(A); ``` で試したところできませんでした。 a[a.Length]が原因なのはわかります。 なぜダメなのでしょうか?? "123"と"456"を同時に格納するにはどうするのでしょうか? よろしくお願いいたします。
回答: まず、コードはマークダウンを使って書いてください。 編集画面でコードを選択して > です。 a[a.Length] がなぜダメなのかということですが、a.Length が 2 だからです。 a[0] a[1] は定義されていますが、a[2] はありません。 同時に入れるという件については、二次元配列(文字列をバイトコードの配列と見た場合)の次元を一つ落として一次元配列にしているので、文字列を連結して入れるしかありません。 そのまま連結したのでは文字列の区切りが無くなりますので、改行コードなどで区切ってください。 すなわち、sendBuffer = Encoding.Unicode.GetBytes(a[0] + "\n" + a[1]) のようになります。 もちろん、これでは二つの文字列にしか対応できません。それ以上対応するために String.Join() を使ってください。 追記 前回の質問を見ると、シリアライザについて回答されています。 文字列などのオブジェクトをバイトコード列に直すことをシリアライズと言い、その処理をするメソッドやオブジェクトをシリアライザと言います。 今回の場合は文字列なので GetByte() で簡単にシリアライズできますが、その他のオブジェクトはこれではできません。シリアライザを使う汎用的な方法を知っておいてください。