VB.Net隐式转换和显式转换的方法(转)
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隐式转换和显式转换的方法(转)的更多相关文章
- 自己定义隐式转换和显式转换c#简单样例
自己定义隐式转换和显式转换c#简单样例 (出自朱朱家园http://blog.csdn.net/zhgl7688) 样例:对用户user中,usernamefirst name和last name进行 ...
- C#中的类型转换-自定义隐式转换和显式转换
目录 前言 基础知识 示例代码 实际应用 问题 答案 报错 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据 ...
- c# 强制转换, 隐式转换, 显式转换
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- C++隐式转换与显式转换
普通类型的转换顺序:隐式把char——>int和从short——>double.转换可能会导致数据的丢失. 自定义类型:有两种函数可以进行隐式转换,单参数构造函数 和 隐式类型转换符. ...
- js 的隐式转换与显式转换
隐式转换 1.undefined与null相等,但不恒等(===) 2.一个是number一个是string时,会尝试将string转换为number 3.隐式转换将boolean转换为numbe ...
- 【C++自我精讲】基础系列五 隐式转换和显示转换
[C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...
- Scala隐式转换和隐式参数
隐式转换 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法.通过这些功能, ...
- scala高级性质-隐式转换 -02
今天我们来介绍scala的高级特性,上次已经介绍过他的一个特性:高阶函数,这次是隐式转换 1.隐式转换的例子 read的例子 解析:发现这个file没有read的方法,然后就开始在开始在这个上下文里面 ...
- Scala入门到精通——第十九节 隐式转换与隐式參数(二)
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...
随机推荐
- Java中域 实例域 静态域
1.java中的域 所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性. 比如类的字段(属性),局部的,全局的.所谓域,其实是“field”的翻译 然后实例域,就是 实例(&qu ...
- 英文SEO外部链接资源收集之常用的footprints
inurl:/privacy-policy "Using Article Directory plugin"inurl:/terms "Using Article D ...
- thinkphp整合系列之rbac的升级版auth权限管理系统demo
权限管理基本是作为网站的标配了: 除非是像博客这类个人使用的:否则权限管理的重要性不言而喻: 今个就来写写auth权限管理: thinkphp已经内置了auth权限类位于:/ThinkPHP/Libr ...
- 编写一条sql命令,sql删除没有中文的表
删除包含中文的 和不饱和中文的字段 SHOW create table pages; drop table if exists `film`; CREATE TABLE `film` ( `id` i ...
- 第19章 网络通信----UDP程序设计基础
用户数据报协议(UDP)是网络信息传输的另一种形式. 基于UDP通信的基本模式如下: (1)将数据打包(称为数据包),然后将数据包发往目的地. 发送数据包: 使用DatagramSocket()创建一 ...
- 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 ...
- jq模拟操作
1.常用模拟 trigger() $('#btn').trigger('click'); 当页面加载完,点击事件就会完成 上面也可以简写成:$('#btn').click(); 2.触发自定义事件 t ...
- label ichartjs
的 var labels = [""+(time(-59).getMonth()+1)+"/"+time(-59).getDate()+"" ...
- java字符编码,字符转码
编码:String->byte[]; str.getBytes(charsetName) 解码:byte[]->String; new String(byte[],charsetName) ...
- 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包,报 ...
注意
警告