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)

任何数值类型(包括 Byte、SByte 和枚举类型)、String、Object

CByte

Byte 数据类型 (Visual Basic)

任何数值类型(包括 SByte 和枚举类型)、Boolean、String、Object

CChar

Char 数据类型 (Visual Basic)

String, Object

CDate

Date 数据类型 (Visual Basic)

String, Object

CDbl

Double 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CDec

Decimal 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CInt

Integer 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CLng

Long 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CObj

Object 数据类型

任何类型

CSByte

SByte 数据类型 (Visual Basic)

任何数值类型(包括 Byte 和枚举类型)、Boolean、String、Object

CShort

Short 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CSng

Single 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CStr

String 数据类型 (Visual Basic)

任何数值类型(包括 Byte, SByte 和枚举类型)、Boolean、Char、Char 数组、Date、Object

CType

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

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

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

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

CUInt

UInteger 数据类型

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CULng

ULong 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

CUShort

UShort 数据类型 (Visual Basic)

任何数值类型(包括 Byte、SByte 和枚举类型)、Boolean、String、Object

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. Java中域 实例域 静态域

    1.java中的域 所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性. 比如类的字段(属性),局部的,全局的.所谓域,其实是“field”的翻译 然后实例域,就是 实例(&qu ...

  2. 英文SEO外部链接资源收集之常用的footprints

      inurl:/privacy-policy "Using Article Directory plugin"inurl:/terms "Using Article D ...

  3. thinkphp整合系列之rbac的升级版auth权限管理系统demo

    权限管理基本是作为网站的标配了: 除非是像博客这类个人使用的:否则权限管理的重要性不言而喻: 今个就来写写auth权限管理: thinkphp已经内置了auth权限类位于:/ThinkPHP/Libr ...

  4. 编写一条sql命令,sql删除没有中文的表

    删除包含中文的 和不饱和中文的字段 SHOW create table pages; drop table if exists `film`; CREATE TABLE `film` ( `id` i ...

  5. 第19章 网络通信----UDP程序设计基础

    用户数据报协议(UDP)是网络信息传输的另一种形式. 基于UDP通信的基本模式如下: (1)将数据打包(称为数据包),然后将数据包发往目的地. 发送数据包: 使用DatagramSocket()创建一 ...

  6. filter by date in Sphinx

    Indexing: include the date column in the sql_query of source. Also set the date as sql_attr_unit PHP ...

  7. jq模拟操作

    1.常用模拟 trigger() $('#btn').trigger('click'); 当页面加载完,点击事件就会完成 上面也可以简写成:$('#btn').click(); 2.触发自定义事件 t ...

  8. label ichartjs

    的 var labels = [""+(time(-59).getMonth()+1)+"/"+time(-59).getDate()+"" ...

  9. java字符编码,字符转码

    编码:String->byte[]; str.getBytes(charsetName) 解码:byte[]->String; new String(byte[],charsetName) ...

  10. MyEclipse报错 Building workspace has encountered a problem Errors occurred during the build 的2种解决方法

    1: Building workspace has encountered a problem Errors occurred during the build 如果报错这个 那么有可能是jar包,报 ...