VB.Net隐式转换和显式转换的方法(转)

时间:2022-09-10 20:25:17

VB.Net隐式转换和显式转换的方法(转)

“隐式转换”不需要源代码中的任何特殊语法。在下面的示例中,在将 k 的值赋给 q 之前,Visual Basic 将该值隐式转换成单精度浮点值。

 
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = K

“显式转换”使用类型转换关键字。Visual Basic 提供了几个这样的关键字,它们将括号中的表达式强制转换为所需的数据类型。这些关键字的行为像函数,但编译器生成内联代码,所以执行速度比使用函数调用要稍微快一些。

下例为上例的扩展,CInt 关键字将 q 的值转换回整数,然后将该值赋给 k

 
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).

转换关键字

下表显示了可用的转换关键字。

 
类型转换关键字 将表达式转换为数据类型 允许的要进行转换的表达式数据类型

CBool

Boolean 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、StringObject

CByte

Byte 数据类型 (Visual Basic)

任何数值类型(包括 SByte 和枚举类型)、BooleanStringObject

CChar

Char 数据类型 (Visual Basic)

StringObject

CDate

Date 数据类型 (Visual Basic)

StringObject

CDbl

Double 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CDec

Decimal 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CInt

Integer 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CLng

Long 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CObj

Object 数据类型

任何类型

CSByte

SByte 数据类型 (Visual Basic)

任何数值类型(包括 Byte 和枚举类型)、BooleanStringObject

CShort

Short 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CSng

Single 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CStr

String 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanCharChar 数组、DateObject

CType

逗号 (,) 后面指定的类型

当转换为“基本数据类型”(包括基本类型数组)时,相应转换关键字所允许的相同类型

当转换为“复合数据类型”时,其实现的接口和继承的类

当转换为一个已经在其上重载 CType 的类或结构时,该类或结构

CUInt

UInteger 数据类型

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CULng

ULong 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CUShort

UShort 数据类型 (Visual Basic)

任何数值类型(包括 ByteSByte 和枚举类型)、BooleanStringObject

CType 函数

CType 函数作用于两个参数。第一个参数是将要转换的表达式,第二个参数是目标数据类型或对象类。注意,第一个参数必须是表达式,不能是类型。

CType 是一个“内联函数”,这意味着转换是由已编译的代码执行的,通常不会生成函数调用。这将提高性能。

有关 CType 与其他类型转换关键字的比较,请参见 DirectCast 和 TryCast。

基本类型

下面的示例说明 CType 的用法。

 
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)

复合类型

可以使用 CType 将值转换为复合数据类型和基本类型。也可以使用它将对象类强制转换为它的一个接口类型,如下例所示:

 
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)

数组类型

CType 也可以转换数组数据类型,如下例所示:

 
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If

有关更多信息及示例,请参见数组转换。

定义 CType 的类型

您可以在已定义的类或结构上定义 CType。它允许将值转换为您的类或结构的类型,反之亦然。有关更多信息及示例,请参见如何:定义转换运算符。

VB.Net隐式转换和显式转换的方法(转)注意

与转换关键字一起使用的值对于目标数据类型必须是有效的,否则将出错。例如,如果试图将 Long 转换为 Integer,则 Long 的值必须在 Integer 数据类型的有效范围内。

VB.Net隐式转换和显式转换的方法(转)警告

如果源类型不从目标类型派生,则指定 CType 以从一个类类型转换为另一个类类型的操作将会失败。这种失败会引发 InvalidCastException 异常。

不过,如果其中一个类型是一个已定义的结构或类,并且如果已经在该结构或类上定义了 CType,则转换只要满足 CType 要求就会成功。请参见如何:定义转换运算符。

执行显式转换即所谓的将表达式“强制转换”为给定的数据类型或对象类。

VB.Net隐式转换和显式转换的方法(转)的更多相关文章

  1. 自己定义隐式转换和显式转换c#简单样例

    自己定义隐式转换和显式转换c#简单样例 (出自朱朱家园http://blog.csdn.net/zhgl7688) 样例:对用户user中,usernamefirst name和last name进行 ...

  2. c# 强制转换, 隐式转换, 显式转换

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  3. C++隐式转换与显式转换

    普通类型的转换顺序:隐式把char——>int和从short——>double.转换可能会导致数据的丢失. 自定义类型:有两种函数可以进行隐式转换,单参数构造函数 和 隐式类型转换符.   ...

  4. js 的隐式转换与显式转换

    隐式转换   1.undefined与null相等,但不恒等(===) 2.一个是number一个是string时,会尝试将string转换为number 3.隐式转换将boolean转换为numbe ...

  5. 【C++自我精讲】基础系列五 隐式转换和显示转换

    [C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...

  6. Scala隐式转换和隐式参数

    隐式转换 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法.通过这些功能, ...

  7. scala高级性质-隐式转换 -02

    今天我们来介绍scala的高级特性,上次已经介绍过他的一个特性:高阶函数,这次是隐式转换 1.隐式转换的例子 read的例子 解析:发现这个file没有read的方法,然后就开始在开始在这个上下文里面 ...

  8. Scala入门到精通——第十九节 隐式转换与隐式參数(二)

    作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...

  9. 《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换

    目录 02:数据类型转换 && 隐式转换 || 显式转换 02:数据类型转换 && 隐式转换 || 显式转换 在上一个章节中,我们介绍了 JavaScript 的基本的 ...

随机推荐

  1. Javascript中构造函数与new命令

    典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念.所谓“类”就是对象的模板,对象就是“类”的实例.但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于 ...

  2. python(23)re函数:compile、match、search、findall

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  3. smartjs 0.2 OOP讲解 - Klass 类继承

    SmartJS2.0加入OOP的功能.OOP包括klass与factory两个对象. Klass 类继承 与其他的类继承相比,smartjs使用了执行指针的概念(后面例子中会介绍),另外提供base基 ...

  4. sqlcode、sqlerrm

    Oracle里 非常有用的 两个变量,很少有人用. 标记一下

  5. Linux前传——第一次写技术博客

    准备写技术博客了.不过,真的没什么技术,以后就写写学习上面遇到的问题与想法吧.

  6. Jumony Core 3,真正的HTML引擎

    Jumony Core 3,真正的HTML引擎,正式版发布 2013-11-28 17:22 by Ivony..., 778 阅读, 18 评论, 收藏, 编辑 Jumony是一个开源项目,已经有三 ...

  7. [ZJOI2008]泡泡堂

    题目描述 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵双方的教练向组 ...

  8. linux 文件 IO 目录操作及文件属性

    ///练习:实现列出某个目录中所有文件属性(文件大小,文件最后修改时间,文件名)//目录名由参数传入 ./dir /home/linux#include <sys/stat.h>#incl ...

  9. 2018-2019-2 《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 <网络对抗技术>Exp2 后门原理与实践 1. 后门原理与实践实验说明及预备知识 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0. ...

  10. 蓝牙 - 小米手环3 NFC版BLE协议研究

    0x01 前言 最近买到了小米手环3nfc版本,基本上实现了我对手环的所有功能需求,高中的时候就缠线圈做过戒指一卡通,但是缺陷是不好看,而且只能储存一张卡,等 手环3nfc版我认为比较好的功能 可以储 ...