- - PR -
C#の「VBのMyClass」にあたるキーワードは?
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-19 13:41
調べたのですが見つかりません。
「ない」との情報はあったのですが・・・ 問題になることは少ないと思いますが、 次のように常に派生クラスではなく基本クラスのメソッド・プロパティを使用したい時もあると思います。 VBではMyClassキーワードで解決できますが、 C#でそのようなキーワードが用意されていなければどうしたらよいですか? よろしくお願いします。
| ||||
|
投稿日時: 2007-08-19 15:06
単にvirtualでないメンバを作って、それぞれのvirtualメンバからはそれ呼ぶようにすればいいのではないでしょうか。
| ||||
|
投稿日時: 2007-08-19 16:17
ちょっとよくわからなかったのですが、 派生クラス「Employee」でもCanDrinkにあたるプロパティを定義してそれを呼び出すということでしょうか? この例では、Ageプロパティが返す値はEmployeeのほうでは大雑把に捉えるようにオーバーライドしているので、 Personのインスタンス:19 Employeeのインスタンス:20 が正しいのですが、CanDrinkは両方Falseでなければならないということです。 Emplyoee側で、オーバーライドしたAgeプロパティとは別に実年齢を求めて飲酒可能かどうかを求める ということであれば確かに可能ですが、 無駄で悪い設計のような気がするのですが・・・ 勘違いしてたらすみません。 | ||||
|
投稿日時: 2007-08-19 16:30
すいません、わかりにくかったですね。
あらためてhei様のご提示のソースで説明します。 Ageのvirtualをとって別の名前、たとえば_Ageにして、 別のvirtualのついた、Ageプロパティを新たに作成して、そこからは単に_Ageを呼ぶだけにして、CanDrinkプロパティからも_Ageのほうを参照するということでよいのではないでしょうか。 | ||||
|
投稿日時: 2007-08-19 17:01
あ、そういうことですか!
確かにいけますね。 ただこれ嵌ったら原因がわかりにくいところだと思いますし、 言語仕様としてVBのようにサポートしてほしいですね。 IIJIMASさん ありがとうございました。 | ||||
|
投稿日時: 2007-08-19 17:30
いらない。どころかサポートしないで欲しいな。 わかっている人しか「できない」方が混乱しないと思うな。 だからそんなことで嵌るという前提がありえない。 | ||||
|
投稿日時: 2007-08-19 18:56
定義を変えるようなオーバーライドをしちゃいかんでしょう。
| ||||
|
投稿日時: 2007-08-19 19:15
Jittaさん、お世話になっています。
今読んでいるVBの本でこの例が出てきまして、 C#ではどうするのだろうと思い質問しました。 |
1|2|3
次のページへ»