数据类型为 .NET Framework 类型

更新:2007 年 11 月

System 命名空间中的结构或类支持 Visual Basic 中的所有基本数据类型。编译器将每种数据类型关键字用作基础结构或基础类的别名。例如,用保留字 Byte 声明一个变量同使用完全限定的结构名 System.Byte 声明它是一样的。

.NET Framework 中可用的附加类和结构

公共语言运行库 (CLR) 还支持 Visual Basic 没有提供的结构和类。例如,System.Guid 结构提供了全局唯一标识符 (GUID),并且 System.TimeZone 类支持时区。可以使用这些类型来声明变量和常量,并且可以访问 .NET Framework 对这些类型实现的方法。但是,Visual Basic 不支持涉及它未提供的类型的操作或类型转换。

值类型和引用类型

在 .NET Framework 中,结构是一种“值类型”,而类是一种“引用类型”。因此,值类型(如 Char 和 Integer)由 .NET Framework 结构实现,而 .NET Framework 类支持引用类型(如 Object 和 String)。请注意,每个数组都是引用类型(即使数组的成员是值类型),而每个结构都是值类型(即使结构有引用类型成员)。

由于每种引用类型表示一个基础 .NET Framework 类,因此您在初始化引用类型时必须使用 New (Visual Basic) 关键字。下面的语句初始化一个数组。

Dim totals() As Single = New Single(8) {}

也可以使用 New 关键字初始化值类型。这对于值类型有一个带参数的构造函数的情况尤为有用。此示例有 Decimal(Int32, Int32, Int32, Boolean, Byte) 构造函数,它从提供的部分生成新的 Decimal 值。

数据类型具有成员

因为 .NET Framework 结构和类支持 Visual Basic 数据类型,所以这些数据类型具有“成员”。这些成员包括构造函数、方法、属性和字段。可以像访问对象的方法和属性那样访问变量的成员(构造函数除外)。

下面的示例使用 YearMonthDay 属性,并使用 System.DateTime 结构的 DaysInMonth 方法确定当前月份中剩下的天数。

Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day

请注意,必须用类型名称 (Date) 或声明为该类型的变量的名称 (current) 来限定对数据类型成员的引用。

数据类型成员的示例

下列代码原型阐释了有关数据类型的一些有用的方法、属性和字段。

<Char>.IsDigit() ' Returns True if character is a numeric digit.

<Char>.IsLower() ' Returns True if character is a lowercase letter.

<Date>.IsLeapYear() ' Returns True if current year is a leap year.

<Date>.ToUniversalTime() ' Returns local date/time converted to UTC.

<Double>.IsInfinity() ' Returns True if contents represent infinity.

<Double>.IsNaN() ' Returns True if contents are not a number (0/0).

<Long>.MaxValue ' Constant representing largest positive Int64 value.

<Object>.GetType() ' Returns Type object representing type of <Object>.

<Object>.GetType().GetTypeCode() ' Returns type code of <Object>.

<String>.Chars(<index>) ' Character at position <index> of <String>.

<String>.Length ' Number of characters currently in <String>.

所有数值类型(包括 Byte 和 Char)都公开 MaxValueMinValue 公共字段,这些字段在处理这些类型时非常有用。

不能保证数据类型成员的等效性

.NET Framework 还提供了许多针对数据类型的方法,这些方法可能看起来与 Visual Basic 函数和关键字等效。不过,Visual Basic 并不总是使用 .NET Framework 方法完成转换或其他操作,而且结果也不总是相同。

例如,ToSingle 方法所执行的操作类型与 CSng 关键字在 Decimal 表达式上执行的操作类型一样。但 CSng 不一定使用 System.数据类型.ToSingle,因此在边缘或边界条件下结果不一定相同。

通常应使用 Visual Basic 编程元素,因为这些编程元素更易于使用并且使代码的可读性更强。在某些情况下,可能需要 .NET Framework 方法提供的额外功能。有关此示例,请参见数据类型的疑难解答中的“Mod Operator Does Not Return Accurate Result”(Mod 运算符不返回精确结果)。

请参见

概念

值类型和引用类型

结构和类

参考

Boolean

Byte

Char

DateTime

Decimal

Double

Guid

TimeZone