- ベストアンサー
VB6変数の宣言dim j,k,p,m,n as Integerは良くない?
お世話になります。 VB暦1年です。 汎用の変数宣言でタイトルのように dim j,k,p,m,n as Integer dim ssa,ssb as String など、カンマ区切りで変数宣言を使っていたのですが 最近、知人にasの手前の変数は型どおり宣言されるが その手前の変数はVariant型で宣言されてしまうと指摘されました。 指摘されるまで気にはしていませんでしたが ウォッチで確認すると変数に代入されるまでは 型がVariant/Emptyとなってます。 以後、気をつければいいのですが 過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。 後々、問題になるのかな?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おっしゃる通り、カンマで区切る場合は、 Dim j As Integer, k As Integer, p As Integer という風にすべてAsで型を明示しないと、 Variant型になってしまいます。 つまり、 Dim j Dim k Dim p As Integer とわけて書いた場合と同じです。 (VB.NETは、 Dim j, k, p As Integer で全部Integerになるようなので、ややこしいですね) すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。 しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか? 他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。
その他の回答 (1)
- knkenkn
- ベストアンサー率50% (1/2)
#1さんのおっしゃるとおり、特に問題ないとは思います。 ですが画面上から入力された値で加算処理を行った場合、処理結果が文字列結合となってしまう場合があります。 その点だけは注意した方がいいかもしれません。 フォームに、ボタンとテキストボックスを貼り付けて下のソースを実行していただけると、結果が文字列結合になっているのが分かります。 Private Sub Command1_Click() Dim a, b, c As Integer a = Text1.Text b = Text1.Text c = 0 MsgBox a + b + c End Sub <開発環境> WinXP pro sp1 VB6.0 sp5
お礼
自由が利くといぅか、あんまり好ましくないですね。 以後、気をつけます。 ありがとうございました。
お礼
スコープはローカル関数範囲内でFor~Nextのカウンタや一時的に代入する文字列変数ぐらいなので致命的な心配はないはず。です。 以後、気をつけます。 ありがとうございました。