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

解決


ゆうきん  2003-10-31 04:00:03  No: 109615

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

TextBox.Text.length  

ってのと

TextBox.Textlength

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

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


ゆうきん  2003-10-31 04:00:41  No: 109616

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


魔界の仮面弁士  2003-10-31 05:05:57  No: 109617

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

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


Y2  2003-10-31 05:20:00  No: 109618

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-31 05:20:40  No: 109619

おおっ!

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

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

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


Y2  2003-10-31 06:53:40  No: 109620

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


red-fish  2003-10-31 07:21:21  No: 109621

> では、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 21:14:36  No: 109622

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加