
下記のサンプルコードでVB2003のときは警告が出なかったのですが、VB2008では警告が出ます。(注!インデントに全角スペース使用)
Private aryNames(5) As String
Private Enum enmItem As Integer
eName1 = 0
eName2
eName3
End Enum
Private Sub Form1_Load(…
Dim i As Integer
Dim en As enmItem
'列挙を使って代入する
Item(en.eName2) = "DATA2"
Item(en.eName3) = "DATA3"
Item(en.eName1) = "DATA1"
'リストボックスで確認
For i = 0 To 2
ListBox1.Items.Add(aryNames(i))
Next
End Sub
Private Property Item(ByVal idx As Integer) As String
Get
Return aryNames(idx)
End Get
Set(ByVal Value As String)
aryNames(idx) = Value
End Set
End Property
警告
使用されないローカル変数'en'です。
インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子にされた型へのアクセスです。正規の式は評価されません。
いちおう警告だけで期待通りの動きはするのですが、そんなに不正なコーディングでもないのに警告がでるのはうっとうしいです。
かといて警告オプション・・・
未使用のローカル変数 なし
共有メンバにアクセスするインスタンス変数 なし
・・・とするのも何だかなあ~ て感じです。
これは、安全なコーディングのため仕様が変わったせいなのでしょうか。 警告オプションをそのままに、上記の警告が出ないようにできないものでしょうか。
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
根本的な話として、変数 en は不要です。
列挙体の内容を使用する際に、そのインスタンスは不要です。
列挙体は、ある意味 定数みたいなものなので。
プロパティ定義の引数とかで使用する場合は、変数としての定義は
必要ですが。
> Dim en As enmItem
の行を消して、
> Item(en.eName2) = "DATA2"
> Item(en.eName3) = "DATA3"
> Item(en.eName1) = "DATA1"
を、
Item(enmItem.eName2) = "DATA2"
Item(enmItem.eName3) = "DATA3"
Item(enmItem.eName1) = "DATA1"
に変更してみてください。
少なくともVS2005では、これで警告が出なくなります。
すばやい回答ありがとうございます。
>そのインスタンスは不要です。
さっそくソースを変更したら、警告はでなくなりました。
ところで、列挙をインスタンス化した目的は長い名前を短くしたかったこともありました。
実際にはこんな感じになりました。
mSpec.Item(enmMySpecItemDat.eDataName) = Me.tbxDataName.Text
mSpec.Item(enmMySpecItemDat.eWorkName) = Me.tbxWorkName.Text
...
まあ、「コピペ」するのでそんな手間でもないんですが~。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
C# インスタンスの破棄
-
インスタンス参照でアクセスで...
-
C#において、同じインスタンス...
-
複数の変数を宣言する時、同時...
-
objective-cで分かりにくい所教...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
newしないインスタンス?実体化...
-
非staticフィールドを参照でき...
-
SAPでいう「インスタンス」って...
-
SQLを連続発行する時の正しい(?...
-
インスタンスを同じ名前で作成...
-
文字列を日付に変換でParseExce...
-
VB.netで標準モジュールからフ...
-
インスタンスのハンドル
-
WebLogic Server でのエラー
-
インスタンス生成で、○○.xxx();...
-
マルチスレッドでのインスタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
変数の参照でエラーが出てしま...
-
インスタンスを同じ名前で作成...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
javaのクラスの作り方、エラー...
-
非staticフィールドを参照でき...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
大量のデータとインスタンスの...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
おすすめ情報