cuclife.com > IT > C# > 0

c# 类型推断的理解

网络整理 - 06-27

理解类型推断

一个新特性使得C#和VB.NET看上去非常像JavaScript之类的动态语言,这个特性就是局部变量类型推断(Type Inference)。当使用类型推断时,你允许C#或VB.NET编译器在编译时确定变量类型。

下面的代码介绍了在C#中如何使用类型推断:

var message = “Hello World!”;

在VB.NET中,使用如下代码:

Dim message = “Hello World!”

注意,变量message在声明时并没有为其指定任何类型。C#和VB.NET编译器会根据你初始化变量时的值来推断变量的类型(这里为String类型)。

使用类型推断并没有性能上的损失(变量并非后期绑定)。编译器在编译时就判断出了变量的数据类型。

为了支持类型推断,C#引入了一个新的关键字:var。当你希望编译器自行判断变量的数据类型时,就可以使用var类型声明变量。

当你为局部变量提供初始值时才能使用类型推断。例如,下面的代码不会执行(C#):

var message;

message = “Hello World!”;

由于message变量在声明时没有初始化,这段代码将不能通过编译(C#编译器)。

下面的代码在VB.NET中可以执行(但它做的并不是你想要的):

Dim message

message = “Hello World!”

在这种情况下,VB.NET认为message变量为一个Object类型。由于将字符串赋给了变量,在运行时将会把变量的值转换为String类型。从性能角度看,这并不是一个好的做法。

注 意:VB.NET 9.0中有一个新的Option叫做Option Infer。要想使隐含类型(implicit typing)正确工作,必须激活Option Infer。你可以在代码文件的最顶端加入“Option Infer On”来激活该类的Option Infer。

c# 类型推断的理解