2012-01-09 8 views
14

VB6コードからC#への自動翻訳と、someArray(3)からsomeArray[3]に翻訳された変換プログラムを確認しています。しかしそれに応じて、古いコードのドキュメントでは、翻訳されたバージョンでやっているように、4番目ではなく3番目の要素を選ぶべきです。配列インデックスはVB6で0ベースですか?

VB6では配列インデックスは0ベースですか?それとも、彼らは1で始まるのですか?

+0

これは配列*宣言*ですか、配列*要素*にアクセスしていますか? –

+0

@Cody配列要素へのアクセス。 –

答えて

14

有り - アレイである(一般的に)0 VB6

これに対する例外は、明示的Dim someArray(1 To 10) as Int構文が使用されている場合であり、又はOption Base 1がコードモジュールの先頭に宣言されたときに基づきます。

これはありません。Collectionオブジェクトをループすると、私はそれらが1ベースであると確信しています。

+4

"Explicit Type Syntaxを使用していない限り" *または*コードブロックの先頭に 'Option Base 1'が宣言されています –

+0

@Matt:良い点。 –

+0

@Mattこの文は現在のファイルにのみ影響しますか? –

6

短い答えは、配列の下限はあなたがと言われている通りです。です。

デフォルトは(Option Base 1によって上書きされない限り)ベース0ですが、(Dim arr(-42 To 42)Dim(3)と同じくらい有効である)あなたが望む任意の値に下限を宣言することができます。

また、あるオブジェクトによって配列が返された場合、その下限は、そのオブジェクトがそれを設定しているものである。たとえば、ExcelRange.Valueのリファレンスは1の配列を返します。

関連する問題