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)

它在 VB 代码的第 3 行给出了这个错误New。我哪里错了?

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

正因为如此,我一般不会混淆AsNew喜欢这个

Dim x As New FooBar() 

因为我认为这有点令人困惑。我更喜欢

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

您必须显式声明数据类型,尤其是对于“已知”数据类型。请记住,Visual Basic 是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 回答