首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#相当于VB.Net的DirectCast

C#相当于VB.Net的DirectCast
EN

Stack Overflow用户
提问于 2010-04-21 22:32:54
回答 10查看 47K关注 0票数 51

C#有没有和VB.Net的DirectCast等价物?

我知道它有()强制转换和'as‘关键字,但它们与CType和TryCast一致。

为了清楚起见,这些关键字执行以下操作;

CType/()强制转换:如果它已经是正确的类型,则强制转换它,否则查找类型转换器并调用它。如果找不到类型转换器,则引发InvalidCastException。

TryCast/"as“关键字:如果类型正确,则强制转换,否则返回null。

DirectCast:如果它是正确的类型,则强制转换它,否则抛出InvalidCastException。

在我解释了上面的内容之后,仍然有人回应说()是等价的,所以我将进一步阐述为什么这不是真的。

DirectCast只允许在继承树上进行缩小或扩大转换。它不像()那样支持跨不同分支的转换,即:

C# -编译并运行:

//This code uses a type converter to go across an inheritance tree
double d = 10;
int i = (int)d;

VB.NET -这不能编译

'Direct cast can only go up or down a branch, never across to a different one.
Dim d As Double = 10
Dim i As Integer = DirectCast(d, Integer)

在VB.NET中,与我的C#代码等效的是CType:

'This compiles and runs
Dim d As Double = 10
Dim i As Integer = CType(d, Integer)
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2683847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档