Textboxで、textlengthってのがありますが、これって、、、

解決


ゆうきん  2003-10-30 19:00:03  No: 109615  IP: [192.*.*.*]

Textboxのテキスト内の文字列長を取得する場合、

TextBox.Text.length  

ってのと

TextBox.Textlength

があるのですが、どちらでもうまくいきます。ヘルプを見たのですが、
TextlengthはTextboxのメンバーだということがわかったのですが、
TextBox.Text.lengthの意味がよくわかりません。

初心者で基本的なことがわかってないと思うのですが、どなたか
ご教授でがねないでしょうか。よろしくおねがいします。

編集 削除
ゆうきん  2003-10-30 19:00:41  No: 109616  IP: [192.*.*.*]

すいません。VB.NETです。

編集 削除
魔界の仮面弁士  2003-10-30 20:05:57  No: 109617  IP: [192.*.*.*]

String型(System.String構造体)には、Lengthプロパティという物があります。
そして、TextプロパティはString型のデータを返します。

それゆえ、TextBox1.Text.Length のような記述ができるわけですね。

編集 削除
Y2  2003-10-30 20:20:00  No: 109618  IP: [192.*.*.*]

TextBoxクラスのメンバであるTextBox.TextプロパティはString型です。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformstextboxclasstexttopic.asp
そして、Stringクラスのメンバを見てみると文字数を取得するためのString.Lengthプロパティがあります。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemstringmemberstopic.asp
なので、
TextBox.Text.Length
で文字数を取得することもできます。

編集 削除
ゆうきん  2003-10-30 20:20:40  No: 109619  IP: [192.*.*.*]

おおっ!

では、TextってのはStringクラスのオブジェクトって考えて
いいんでしょうか?

つまりTextboxクラスからするとStringクラスは、メンバオブジェクト
って考えることができるんですよね?

ちがいますか?すっとんきょーなこといってます?
すいません。自信がないです。僕を男にしてください!!
おねがいします!

編集 削除
Y2  2003-10-30 21:53:40  No: 109620  IP: [192.*.*.*]

そういう感じで大丈夫だと思いますけど、
実際には、TextBox.Textはそれ自体がメンバオブジェクトっていうわけではなく、TextBoxオブジェクトが保持しているStringオブジェクトへのアクセス方法をTextBox.Textプロパティが外部に提供している感じだと思います。たぶん。

編集 削除
red-fish  2003-10-30 22:21:21  No: 109621  IP: [192.*.*.*]

> では、TextってのはStringクラスのオブジェクトって考えて
> いいんでしょうか?

およそ正解ではないでしょうか。くどっぽく書けば、
TextBoxクラスが公開するTextプロパティというインターフェースは
Stringクラスのオブジェクトでやりとりする。

> つまりTextboxクラスからするとStringクラスは、メンバオブジェクト
> って考えることができるんですよね?

part-of や has a のイメージがからんでますかね?
こちらはちょっと表現があいまいすぎる感があります。
「Stringクラスは、メンバオブジェクト」というように「クラスがメンバ」
と言ってしまうとTextBoxクラス内で定義されているPrivateなクラスを
イメージしてしまったり、また「クラスがオブジェクト」となると
メタクラスかなとも思います。

「Textboxクラスからすると」という視点は、クラス内をホワイトボックス
として分析する視点だと思いますが、そうなると、
TextBoxクラスはTextBoxBaseクラスを継承し、TextBoxBaseクラスは
Controlクラスを継承しています。
そして、TextプロパティはこのControlクラスで定義されているインターフェース
です。

このような継承関係を踏まえて述べるなら、
「TextBoxクラスからするとStringクラスは……
Baseクラスが公開しているTextプロパティにおいて
値の格納に、このクラスのメンバオブジェクトを利用している」
(実際に格納しているのはBaseクラスなのか、それとも
TextBoxクラスが自身でオーバーライドしているのかは内部実装を調べないと
わからない)
上記の言い回しはちょっと苦しい繋ぎ方ですが、
「TextboxクラスからするとStringクラスは、メンバオブジェクト」
というのが、先のようなイメージなら、およそ正解だと思います。

編集 削除
ゆうきん  2003-10-31 12:14:36  No: 109622  IP: [192.*.*.*]

ありがとうございました。
わかりやすい説明でした。
みなさん、やさしくわかりやすい説明で
自信がもてました。これで男になることができました。ぺこりー

編集 削除