トップ回答者
C#では、パラメーターを有するプロパティーを作ることはできない?

質問
回答
-
「あって当然」とのことですが、どういったお考えからでしょうか。
多くの人が共感できるような便利さ、あるいは多くの人が問題と感じている使い方等を指摘できれば、今後の仕様拡張の可能性が出てくるかもしれません。
もちろん、言語仕様として辻褄が合うことが前提になりますが…。
私見ですが、引数を持たせるプロパティはいらないかなぁと思っています。
凝ったことをしたいのであれば、メソッドである方が分かりやすく、無理にプロパティである必要性を感じないためです。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク 外池 2009年7月15日 1:16
すべての返信
-
「あって当然」とのことですが、どういったお考えからでしょうか。
多くの人が共感できるような便利さ、あるいは多くの人が問題と感じている使い方等を指摘できれば、今後の仕様拡張の可能性が出てくるかもしれません。
もちろん、言語仕様として辻褄が合うことが前提になりますが…。
私見ですが、引数を持たせるプロパティはいらないかなぁと思っています。
凝ったことをしたいのであれば、メソッドである方が分かりやすく、無理にプロパティである必要性を感じないためです。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク 外池 2009年7月15日 1:16
-
外池です。みなさんの回答、ありがとうございました。C#の言語仕様としての理解はOKということで納得です。
Azuleanさんのご指摘の「あって当然」という表現は、私も、あまりよくなかったと反省してます。CLSで定められた仕様、あるいは、許されている仕様は、C#では実現できるものという、まぁ、私の思い込みがあった、というのが実態です。
ちなみに、VBでパラメーターありのプロパティーを持つライブラリーを作って、C#で参照してみたらメソッドとして見えました。わざわざ「get」というPrefixがメソッド名に付加されていました。
(ホームページを再開しました) -
Azuleanさんのご指摘の「あって当然」という表現は、私も、あまりよくなかったと反省してます。CLSで定められた仕様、あるいは、許されている仕様は、C#では実現できるものという、まぁ、私の思い込みがあった、というのが実態です。
全ての仕様を取り込まないといけないという印象は持っていません。(どこかにそのことを明記してあるかは調べていません)
言語毎にできること、できないことがいくつかあると思います。
それだとプロパティ自身がいらないと言うことになりませんか?
私的な意見ですが、var a = instance.GetValue(); とか、 instance.SetValue(a); というように、引数を持たない getter、1つの引数しか持たない setter ならプロパティ構文が良く、それ以上の引数を持つ場合は、明確にインデックスだと分かるもの以外は、メソッドにした方が良いのではと思っています。
プロパティのメリットはセッター・ゲッターを意識させない構文ってことではないかと思いますが
ただ、それを納得させるだけの材料、あるいは具体例は持ち合わせていません…。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。