4

アップグレード ウィザードを使用して、VB6 を VB.NET プロジェクトにアップグレードしています。これが私に多くの悲しみを与えることになることはわかっていますが、私は古いアプリケーションを使えるようにしようとしています. 時間があれば書き直しますが、現在は夏のインターンシップを終えており、何かを動かしたいと思っています。

ウィザードが行っていることの 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 という名前の変数は他になく、名前を変更してもコンパイラ エラーは発生しません。

'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 Left As Integer

コンパイラ エラーは発生しません。

私のプロジェクト全体で一見ランダムな変数に対してこれを行います。私の変数名の一部が気に入らない理由について、誰か考えがありますか?

4

3 に答える 3

4

私の推測では、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 の名前バインディング ルールは、モジュール関数の左よりもメンバー変数の左を優先します。

そのため、理由は完全にはわかりませんが、潜在的なあいまいさを避けるために、おそらく過度の注意を払っています.

于 2009-08-13T22:54:01.900 に答える
1

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

于 2009-08-13T22:54:21.477 に答える
1

VB6 x$ = left$("hello world",5) print x$ こんにちは

VB2005、8、9 対 VB6

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

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

于 2012-01-17T19:44:36.940 に答える