VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 数据类型实现 (Visual Basic)

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

在 Visual Basic 中,数据类型是基于其类别实现的。 根据特定类型的变量存储的是自己的数据还是指向数据的指针,可以对 Visual Basic 数据类型进行分类。 如果它存储的是自己的数据,则它是值类型;如果它保存指向内存中其他位置的数据的指针,则它是引用类型。

值类型

如果数据类型在它自己的内存分配中存储数据,则该数据类型就是“值类型”。 值类型包括:

  • 所有数字数据类型

  • Boolean、Char 和 Date

  • 所有结构,即使其成员是引用类型

  • 枚举,因为其基础类型总是 SByte、Short、Integer、Long、Byte、UShort、UInteger 或 ULong

每个结构都是一种值类型,即使它具有引用类型成员。 因此,诸如 Char 和 Integer 之类的值类型由 .NET Framework 结构实现。

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

引用类型

“引用类型”包含指向存储数据的其他内存位置的指针。 引用类型包括:

  • String

  • 所有数组,即使其元素是值类型

  • 类类型,如 Form

  • 委托

类是一种“引用类型”。 因此,诸如 Object 和 String 之类的引用类型都受 .NET Framework 类支持。 请注意,每个数组都是一种引用类型,即使其成员是值类型。

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

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

.NET Framework 中的其他可用类型

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

非类型的元素

以下编程元素未限定为类型,因为您无法将它们中的任何一个指定为声明元素的数据类型:

  • 命名空间

  • 模块

  • 事件

  • 属性和过程

  • 变量、常数和字段

使用对象数据类型

可以将引用类型或值类型指派给 Object 数据类型的变量。 Object 变量总是存储指向数据的指针,从不存储数据本身。 然而,如果为 Object 变量指派值类型,该变量的行为将如同存储自己的数据一样。 有关更多信息,请参见 Object 数据类型。

通过将 Object 变量传递给 Microsoft.VisualBasic 命名空间中 Information 类的 IsReference 方法,可以确定该变量是用作引用类型还是值类型。 如果 Object 变量的内容表示引用类型,则 Information.IsReference 返回 True。

数据类型具有成员

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

下例使用 Year、Month 和 Day 属性,并使用 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)都公开 MaxValue 和 MinValue 公共字段,这些字段在处理这些类型时非常有用。

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

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

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

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

相关章节

术语

定义

Visual Basic 中的数据类型

介绍 Visual Basic 数据类型并说明如何使用它们。

数据类型摘要 (Visual Basic)

列出 Visual Basic 提供的基本数据类型。

Visual Basic 中的类型转换

解释类型转换,即将值从一种数据类型更改为另一种数据类型的过程。

结构 (Visual Basic)

解释结构,结构是使用 Structure 关键字声明的用户定义类型。

有效使用数据类型 (Visual Basic)

介绍通过使用数据类型提高执行速度的方法。

Object 数据类型

介绍 Object 数据类型,该类型可以用于引用任何数据类型的数据。

 

原文链接:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/esc8tb11(v=vs.100)

相关教程