- - PR -
VS2005では'インスタンスを経由する共有メンバ〜'の警告が出る
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-06 16:50
こんにちは。
上記のソースコードでVS2003(VB.NET)では問題ないのですがVS2005ではif文の箇所で 'インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子に された型へのアクセスです。正規の式は評価されません'とでます。
と、名前空間をきちっと付けると問題ないようです。 自分で作った列挙型定数のアクセスもVS2003まで問題なかったのですが、VS2005から 警告が出ます。 これはどういうことなのでしょうか? | ||||||||
|
投稿日時: 2005-12-07 01:37
これだと警告は表示されますでしょうか?
res のことを言っているのかな? > インスタンスを経由する _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-12-07 04:18
FormのDialogResultプロパティを見ているっぽいですね。
つまり、res = Me.DialogResult.Okになっているということ。 インスタンス経由とはMe.DialogResult経由ということですね、多分。 | ||||||||
|
投稿日時: 2005-12-07 09:49
こんにちは。
じゃんぬねっとさん、同じでした。 なちゃさんが言われているとおりでした。 フォームを継承したクラスの中のメソッドに書くと警告が出て、フォームでないクラス の中では名前空間が無くとも問題ありませんでした。 調べてみると、Formクラスの中にもDialogResultプロパティがあり、Formクラスの 中からだとそのプロパティのほうを見ているようです。 VS2003(VB.NET)では、'If res =' と打ち込んだときにでるインテリセンスは、名前空間 を省略したDialogResult.Okなどの形で一覧がでて、問題なくコンパイルできていたので すが、そのソースをVS2005に持っていったとたんに警告がわんさか出る状態でした。 VS2005でのインテリセンスではWindows.Forms.DialogResult.OKと名前空間付で表示され ていました。 その他、ImeModeやMouseButtonsなどもFormクラスのプロパティがあり、同様の問題で 警告がわんさかでていたので若干パニックってました。 ちなみに、いままでDialogResultや列挙型は何気なく使っていたのですが、あらためて 調べて見ると非常に違和感を感じました。 Enumってクラスの外でも宣言できるのですね。しかも、FormクラスなどにはDialogResultなどEnumで宣言されているものと同名のものがプロパティで実装されて いるとは知りませんでした。 Javaをやっていたせいか、この部分の仕組みは知らず知らずに誤解のあるコードを 書いてしまうような感じがして、違和感があるのは私だけでしょうか? 今の開発環境はインテリセンスで勝手にコードを補完してくれるので気にはしませ んが、あらためてこのような問題がでると、言語仕様をきちんと理解できていない ことに気がつきますね。 |
1