2009-08-13 77 views
2

アップグレードウィザードを使用してVB6からVB.NETプロジェクトにアップグレードしています。これは私に多くの悲しみを与えることが分かっていますが、私は古いアプリケーションを使いやすくしようとしています。私は時間があっても書き直したいと思っていますが、現在は夏期のインターンシップを終えていて、何か働きたいと思っています。VB6からVB.NETへVisual Studioアップグレードウィザードで変数名の一部が嫌い

ウィザードがしていることの1つは、ランダム変数の名前の変更が正当化されていないことです。例:

Structure ctrObj 
    Dim Name As String 
    Dim Index As Integer 
    Dim Top As Integer 
    'UPGRADE_NOTE: Left was upgraded to Left_Renamed. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"' 
    Dim Left_Renamed As Integer 
    Dim Height As Integer 
    Dim width As Integer 
    Dim ScaleHeight As Integer 
    Dim ScaleWidth As Integer 
End Structure 

私の人生にとって、なぜこれが左に変化するのか分かりません。私が言うことができる限り、予約された名前ではありません。スコープ内で見つけることができるleftという別の変数はなく、名前を変更してもコンパイルエラーは発生しません。

Dim Left As Integer 

に変更

'UPGRADE_NOTE: Left was upgraded to Left_Renamed. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"' 
    Dim Left_Renamed As Integer 

は、コンパイラエラーを与えるものではありません。

これは、私のプロジェクトを通して一見無作為な変数になります。誰も私の変数名のいくつかが好きではないというアイデアは誰にでもありますか?

答えて

2

私の最高の推測では、VB Function Leftとの混同を避けるために、Leftという名前が変更されています。これは、すべてのVB.Netプロジェクトにデフォルトでインポートされる名前空間内のモジュール上のメソッドです。このように、それは世界的に利用可能です。例えば

:これは、おそらく、関数が引数なしで使用された場合、曖昧エラーがあるかもしれないことを心配しているだけで結構

Dim x = Left("here", 1) 

をコンパイルします。例えば、

Public Structure S1 
    Public Left As Integer 
    Public Sub Method1() 
    Dim x = Left 
    End Sub 
End Structure 

しかし、これはいくつかの理由で起こることはありません。主にVBのネームバインディングルールは、メンバ変数Left Left the Module Function Leftよりも優先されます。

なぜ、それほど確かではないのでしょうか。しかし、おそらくあいまいさを避けるためには注意が必要です。

+0

非常に迷惑ですが、意味があります。これは、loggerという名前の変数でも行います.Loggerというデフォルトのインポートされたメソッドがありますか? – user142350

1

Leftは、Visual Basicの文字列関数です。文字列の左側から指定された文字数を受け取り、それらの文字を含む新しい文字列を返します。

1

VB6のx $ =左$( "Hello World" の、5)VB6

対 印刷X $ハロー

VB2005,8,9

left = left$ 
right = right$ 
mid = mid$ 
trim = trim$ 
chr(13)+chr(10) = Chr$(32)+ Chr$(10) (line feed + carriage return) 

左は予約語であるとエラーを生成します。変換プログラムは変更されたことをあなたが知っている方法で変更します。

関連する問題