什么是VB.NET中对象声明中(As)和(=)之间的区别

Ram*_*eef 7 vb.net declaration

我可以像这样创建一个新对象:

Dim sqlconn As New SqlClient.SqlConnection(cs)
Run Code Online (Sandbox Code Playgroud)

或者像这样:

Dim sqlconn = New SqlClient.SqlConnection(cs)
Run Code Online (Sandbox Code Playgroud)

有什么不同?既然两者都适合我!

Guf*_*ffa 13

第一个是简短的形式:

Dim sqlconn As SqlClient.SqlConnection = New SqlClient.SqlConnection(cs)
Run Code Online (Sandbox Code Playgroud)

第二个取决于您使用的VB版本.在VB 7和VB 8中它与以下内容相同:

Dim sqlconn As Object = New SqlClient.SqlConnection(cs)
Run Code Online (Sandbox Code Playgroud)

在VB 9中引入了类型推断,因此编译器将从赋值中推断出类型并生成与第一个相同的代码.

类型推断要求将选项Option Infer设置为on.这是默认设置,但如果从旧版本迁移项目,则可能会关闭.

  • +1值得一提的是,只有你有'Option Infer On`才能推断出类型,否则VB9就像早期版本一样. (3认同)