- - PR -
CONSTに関して
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-04-04 18:04
最初に。基本的に一郎さんのおっしゃるとおり、列挙体を使うべきだと私も思っています。で、ちょっとツッコミを。
これを意味を示すものと強調するのは危険な気がします。というのも、バージョン2においてDirectionが次のように拡張された場合、 [code] enum Direction{ NorthWest, NorthEast, SouthWest, SouthEast, North, South, East, West, } [code] Direction.Northの値が変わってしまい、これまでのコードは動作しなくなります。Direction.Northが本当に「北」という意味を表していれば、こんなことは起こらないはずです。実際、CLRではメソッド定義の順序をソースコード内部で変更しても、呼び出されるメソッドが変わったりはしません。これはvテーブルのオフセットなどではなく、「Console.WriteLine」の意味を実現しているからです。ですが、列挙体ではこのような意味での意味を表しているわけではないので、コンパイルすると値が変わってしまうことがありえます。 だからといって列挙体の利用に反対しているわけではありません。定数より列挙体というご意見に私も賛成です。 | ||||
|
投稿日時: 2003-04-04 18:44
Jittaさんの案で実現すると、こんな感じでしょうか。
Public Enum AdminID super east west End Enum EastWest = Request.QueryString.Item("EastWest") // EastWestの値は"east"、"west"、"super"とする。 If EastWest = Enum.GetName(AdminID,AdminID.east) Then // "east"だった場合の処理 End If と、まあ、一応可能だとは思うのですが、 NothingButXMLInfoSetさんのやりかたの方が 私としては好みです。 | ||||
|
投稿日時: 2003-04-07 10:11
こんにちは。
私の案ではありません。「デジタルアドバンテージ」と、著作権表示してあります。私はただ、このスレッドを見る前にTipsを見ていて、「あ、こんなこともできるのか」と思ったことが、ちょうど当てはまると思ったので紹介しただけです。 #ここでは問題にならないでしょうが、会社の製品なんかでだと #大きな問題になることがあるので、ご注意を | ||||
|
投稿日時: 2003-04-07 11:08
Jittaさんの書き込み(2003-04-07 10:11)より
なるほど。私としては「Enum定数の名称を文字列比較の対象とする」という提案に関して「Jittaさんの案」としたつもりだったのですが、著作権に触れる恐れはあるかもしれませんね。気を付けるようにします。 | ||||
