3

私はC#のバックグラウンドを持っており、VB.Netでコーディングする必要があります(新しい仕事)

私はVB.Netでコードを書いていますが、これはC#(構文変更後)では正常に機能しますが、VB.Netではエラーが発生しますArray bounds cannot appear in type specifiers

C#コード

TimeSpan yesterday = new TimeSpan(1, 19, 0);

DateTime today = new DateTime(2012, 9, 4, 8, 48, 0);

DateTime ts = today.Add(new TimeSpan(9, 0, 0)).Subtract(yesterday);

VB.Netコード

Dim yesterday As New TimeSpan(1, 19, 0)

Dim today As New DateTime(2012, 9, 4, 8, 48, 0)

Dim ts As today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)

NewVBコードの3行目でこのエラーが発生します。私はどこが間違っていますか?

4

2 に答える 2

10
Dim ts As today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)

する必要があります

Dim ts = today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)

また

Dim ts As DateTime = today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)

変数を宣言するときはAs、型指定子として使用します。

Dim x As Int32
x = 10

また

Dim x As Int32 = 10

同じ行の変数に値を割り当てる場合は、型指定子を省略できます。

Dim x = 10

このため、私は一般的に混同せず、これがAs好きNewです

Dim x As New FooBar() 

やや紛らわしいと思います。私は好きです

Dim x = New Foobar()
于 2012-09-04T12:27:18.403 に答える
1

特に「既知の」データ型の場合は、データ型を明示的に宣言する必要があります。VisualBasicはCASE INSENSITIVE

Dim ts As datetime = today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)

ただし、設定されている場合は、変数のデータ型を省略できます。

Option Infer ON

デフォルトでは、ON

于 2012-09-04T12:30:33.353 に答える