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. 隐式參数中的 ...
随机推荐
- Sublime Text 3 安装使用
机器比较老,运行Pycharm等卡死,所以选择Sublime,非常流畅. 安装 版本3103 官网下载安装 注册码: —– BEGIN LICENSE —–Nicolas HennionSingle ...
- PAT (Advanced Level) 1102. Invert a Binary Tree (25)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- cordova 启动界面config.xml配置
<preference name="SplashScreen" value="screen"/> <preference name=" ...
- 关于svn的安装问题
直接把安装包放在 MyEclipse的安装目录下 如果 报错 那么就重装MyEclipse 半个小时左右就OK了不然调错太浪费时间了
- we7 数据库
备份其他we7网站数据库 然后附加数据库,重新命名即可 不能是对其他we7数据库生成脚本,然后执行脚本,因为后台需要一些配置数据 不然后台看不到左侧的工具栏
- mysql中变量character_set_connection的具体作用
如题.通常的使用中,character_set_client,character_set_connection这两个变量的值是一样的,也就是说查询不需要进行编码转换.这样看来变量character_s ...
- higncharts 编辑Highcharts.com链接
credits: { text: 'Example.com', href: 'http://www.example.com' }, 只 ...
- 水流(water)
水流(water) 题目描述 全球气候变暖,小镇A面临水灾,于是你必须买一些泵把水抽走.泵的抽水能力可以认为是无穷大,但你必须把泵放在合适的位置,从而能使所有的水能流到泵里.小镇可以认为是N×M的矩阵 ...
- Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- LaTeX 多个图片共用一个题注的实现--子图形
http://blog.sina.com.cn/s/blog_58b8951801000a9e.html \begin{figure}\centering\subfigure[这是第一幅图]{\lab ...
注意
警告