- PR -

クラスのLengthについて

投稿者投稿内容
未記入
会議室デビュー日: 2009/02/04
投稿数: 8
投稿日時: 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;
}

}
よろしくお願いします。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2009-02-17 16:45
引用:

未記入さんの書き込み (2009-02-17 16:38) より:
クラス自体のlengthを取得したいのですが、
可能なんのでしょうか?



クラスのLengthとは何ですか?
またそれを取得して何に使うつもりですか?
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-17 16:53
このクラスの場合、Length は何を返すのが正しい仕様なのですか?
未記入
会議室デビュー日: 2009/02/04
投稿数: 8
投稿日時: 2009-02-17 17:06
やりたい事はWCF.Stream配信です。

stream(byte[])配信なので随時受信しますが、
受信の度に必要な処理をしたいのです。

文字列の場合は、
2103500とある場合は最初の2がlengthを表すと
10という値を取得します。次は3がlengthで値が500。
処理中でlength分ない場合は次の受信の時に合わせて処理します。

stream配信サンプルで文字列ではうまくいったのですが、
クラスの場合はうまくいきませんでした。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2009-02-17 17:43
引用:

stream(byte[])配信なので随時受信しますが、
受信の度に必要な処理をしたいのです。

文字列の場合は、
2103500とある場合は最初の2がlengthを表すと
10という値を取得します。次は3がlengthで値が500。
処理中でlength分ない場合は次の受信の時に合わせて処理します。


"2103500"という文字列の場合は、最初の"2"がLengthを表すので
続く2文字の"10"がデータになります。
"10"の後の"3"が、Lengthを表すので、続く3文字の"500"が
データになります。
ということですか。ちょっとわかりにくかったです

純粋な疑問ですけどLengthが10以上の場合ってどうなるんでしょうか…
---------
で、未記入さん(名前入れて欲しいな)の知りたいことは
Personクラスを何らかの方法で文字列化したときの文字数が知りたい
ということですか?
それとも、別のものでしょうか?

引用:

stream配信サンプルで文字列ではうまくいったのですが、
クラスの場合はうまくいきませんでした。


どうやって、何を期待して、どううまくいかなかったのかを
もう少し詳しく教えて頂けないでしょうか。

後、よねKENさんや、Kingさんの質問も回答するために
大事な情報なので教えて下さい。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2009-02-17 17:55
クラスのなにを送受信するのかが分からないですが…もしあるとすれば、「シリアライズ」かなと。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-17 18:12
具体例を提示出来ますか?
Person クラスをインスタンス化し、
各プロパティにそれぞれどういう値を設定した結果、
GetLength メソッドが何を返して欲しいのか。

Name プロパティに「跡幕太郎」、
Age に 30 を設定した結果、
GetLength メソッドが 5000 を返して欲しい、
って感じで。

あとなぜ その値を返すのかと言うその原理と。
未記入
会議室デビュー日: 2009/02/04
投稿数: 8
投稿日時: 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がデータとなる。
}
文字列をクラスで処理することが出来るのか知りたかったのです。

スキルアップ/キャリアアップ(JOB@IT)