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. 隐式參数中的 ...
随机推荐
- javascript语句语义大全(7)
1. 事件 onmousedown——鼠标按下事件 当鼠标按下的时候触发,根据鼠标不同的按键会有不同的值传入,左键0,滚轮1,右键2,不同浏览器可能有不同. onmousemove——当鼠标移动的时候 ...
- android:editable is deprecated: Use an <EditText> to make it editable
问题:android:editable is deprecated: Use an to make it editable 意思:Android的:编辑是反对:使用<</span> ...
- android 代码优化:封锁输出日志
可以使用 ProGuard 完全地删除任何在发布版中无用的语句,关于 ProGuard 参见: http://developer.android.com/guide/developing/tools/ ...
- 通过ReconstructMe实现3D扫描
实物3D建模 目前在3D游戏制作过程中,需要专业人士花几天甚至数星期的时间,借助于Autodesk 3ds Max和Maya等昂贵的软件工具制作3D模型.纹理和动画.游戏制作中经常使用一种方法,即设计 ...
- java监控函数执行时间
java监控函数执行时间 http://blog.csdn.net/ycg01/article/details/1467542 java监控函数执行时间 标签: javathreadclassstri ...
- 【项目笔记】布局文件报错Suspicious size: this will make the view invisible, probably intended for layout_width
写着写着就懵逼了,一直以为布局文件没写错啊,horizontal就是竖直啊,原来布局文件报错,不仅仅需要从报错的地方解决问题,还需要从其他地方去分析. 很明显是方向orientation选错了,应该写 ...
- [code]字母重排
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- Mysql 随机查询数据
SELECT * FROM tablename ORDER BY RAND() LIMIT 10
- Mac linux 安装memcached服务 用法
今天在Mac上安装memcached服务的时候 由于安装memcached之前需要安装libevent依赖包 所以使用brew install libevent 安装过程中报错 Warning: Yo ...
- C# 经典入门15章-TextBoxControl
第一步:设计界面如下:
注意
警告