为什么VB.Net代码中的这个错误在C#中运行良好(语法更改后)

Nik*_*wal 3 c# vb.net

我来自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);
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

它在NewVB代码的第3行下给出了这个错误.我哪里错了?

slo*_*oth 10

Dim ts As today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)
Run Code Online (Sandbox Code Playgroud)

应该

Dim ts = today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)
Run Code Online (Sandbox Code Playgroud)

要么

Dim ts As DateTime = today.Add(New TimeSpan(9, 0, 0)).Subtract(yesterday)
Run Code Online (Sandbox Code Playgroud)

声明变量时,使用As类型说明符.

Dim x As Int32
x = 10
Run Code Online (Sandbox Code Playgroud)

要么

Dim x As Int32 = 10
Run Code Online (Sandbox Code Playgroud)

为同一行的变量赋值时,可以省略类型说明符.

Dim x = 10
Run Code Online (Sandbox Code Playgroud)

正因为如此,我一般不混淆AsNew这样的

Dim x As New FooBar() 
Run Code Online (Sandbox Code Playgroud)

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

Dim x = New Foobar()
Run Code Online (Sandbox Code Playgroud)