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。它允许将值转换为您的类或结构的类型,反之亦然。有关更多信息及示例,请参见如何:定义转换运算符。

注意

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

警告

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

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

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

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

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

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

  2. C#中的类型转换-自定义隐式转换和显式转换

    目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. TcpClient 读写流

    TcpClient 读写流 TcpClient tcp = new TcpClient(); tcp.Connect(IPAddress.Parse("192.168.1.161" ...

  2. android 代码优化:封锁输出日志

    可以使用 ProGuard 完全地删除任何在发布版中无用的语句,关于 ProGuard 参见: http://developer.android.com/guide/developing/tools/ ...

  3. SORT函数的使用方法(转载)

    sort函数的用法(转载出处:http://blog.sina.com.cn/s/blog_6439f26f01012xw3.html) 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写 ...

  4. JavaScript window.setTimeout() 的详细用法

    setTimeout (表达式,延时时间)setTimeout(表达式,交互时间) 延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTimeout 在执行时,是在载入后延迟指定时间后, ...

  5. 转 spring security的使用

    [转自:http://haohaoxuexi.iteye.com/blog/2154714] 关于登录 目录 1.1     form-login元素介绍 1.1.1    使用自定义登录页面 1.1 ...

  6. navicat 导出mysql表结构

    选中需要导出表结构的数据库,右键,在显示的菜单中选择“数据传输”这一项 ,在弹出窗口中“数据传输”单击选择“高级”一项,在“高级”中把“记录选项”中的勾去掉,在做一些设置,最后导出表数据就不会导出记录 ...

  7. iOS中4种判断网络请求的方式(系统状态栏、AFNetworking、Reachability、自定义)

    iOS 实时判断网络状态 方法一:利用系统状态栏判断网络状态 // 状态栏是由当前app控制的,首先获取当前app UIApplication *app = [UIApplication shared ...

  8. 2快速掌握OMD

    我们已经知道使用ArcGIS Engine开发,也就意味着我们要和接口打交道,ArcGIS Engine中提供的接口和类加起来估计上万,但是用过ArcGIS Engine的人,知道这个数字不为过.Ar ...

  9. CSS文字垂直居中和font-family属性

    1.单行文字的垂直居中 单行文字垂直居中比较简单,直接让行高==盒子高度即可. 2.多行文字居中 多行文字居中,只需简单计算一下盒子的上padding即可.计算公式:padding-top=(盒子的高 ...

  10. Sping--AOP--Annotation

    Aspectj 概念: 1. joinpoint:切入点, 比如@Before, @After, @Around 2. Pointcut:切入点集合, 比如 @Pointcut("execu ...