- - PR -
クラスのLengthについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-17 16:38
クラス自体のlengthを取得したいのですが、
可能なんのでしょうか? 色々調査していますが見つかりません。 public class Person { public Person(string name ,int age) { m_name = name; m_age = age; } string m_name; int m_age; public string Name { get { return m_name; } } public int Age { get { return m_age; } } public int GetLength() { //To Do return 0; } } よろしくお願いします。 | ||||||||
|
投稿日時: 2009-02-17 16:45
クラスのLengthとは何ですか? またそれを取得して何に使うつもりですか? | ||||||||
|
投稿日時: 2009-02-17 16:53
このクラスの場合、Length は何を返すのが正しい仕様なのですか?
| ||||||||
|
投稿日時: 2009-02-17 17:06
やりたい事はWCF.Stream配信です。
stream(byte[])配信なので随時受信しますが、 受信の度に必要な処理をしたいのです。 文字列の場合は、 2103500とある場合は最初の2がlengthを表すと 10という値を取得します。次は3がlengthで値が500。 処理中でlength分ない場合は次の受信の時に合わせて処理します。 stream配信サンプルで文字列ではうまくいったのですが、 クラスの場合はうまくいきませんでした。 | ||||||||
|
投稿日時: 2009-02-17 17:43
"2103500"という文字列の場合は、最初の"2"がLengthを表すので 続く2文字の"10"がデータになります。 "10"の後の"3"が、Lengthを表すので、続く3文字の"500"が データになります。 ということですか。ちょっとわかりにくかったです 純粋な疑問ですけどLengthが10以上の場合ってどうなるんでしょうか… --------- で、未記入さん(名前入れて欲しいな)の知りたいことは Personクラスを何らかの方法で文字列化したときの文字数が知りたい ということですか? それとも、別のものでしょうか?
どうやって、何を期待して、どううまくいかなかったのかを もう少し詳しく教えて頂けないでしょうか。 後、よねKENさんや、Kingさんの質問も回答するために 大事な情報なので教えて下さい。 | ||||||||
|
投稿日時: 2009-02-17 17:55
クラスのなにを送受信するのかが分からないですが…もしあるとすれば、「シリアライズ」かなと。
| ||||||||
|
投稿日時: 2009-02-17 18:12
具体例を提示出来ますか?
Person クラスをインスタンス化し、 各プロパティにそれぞれどういう値を設定した結果、 GetLength メソッドが何を返して欲しいのか。 Name プロパティに「跡幕太郎」、 Age に 30 を設定した結果、 GetLength メソッドが 5000 を返して欲しい、 って感じで。 あとなぜ その値を返すのかと言うその原理と。 | ||||||||
|
投稿日時: 2009-02-17 18:12
説明不足及び説明下手で申し訳ありません。
文字列の説明はKazukiさん指摘どおりです。 純粋な疑問のLengthが10以上だと動作しませんね。。 お聞きしたいのが文字列化した場合ではなく別のものです。 WCF.TCPBindingのStream配信で受信時に、 受信したサイズ分を処理したいのです。 受信したサイズを求めたいのですが、 配信がすべて終了していないためstream.lengthプロパティは使えません。 Stream st = client.GetData() //WCFでサーバより受信 const int bufferLen = 4096; byte[] buffer = new byte[bufferLen]; while ((count = st.Read(buffer, 0, bufferLen)) != 0) { //受信したcount分を処理したいが全て受信していない //受信して処理できる分だけ処理したい。 //先ほど文字列だと(21)と受信した場合には、2がLengthでLength分取得できない。 //次の受信で(0)と受信した場合は前回受信分の21に0をつけて、10がデータとなる。 } 文字列をクラスで処理することが出来るのか知りたかったのです。 |