自从我从2005年的某个地方从VB6移到VB.NET以来,我一直在使用CType从一种数据types转换到另一种数据types。 我这样做是因为它只是键入的速度更快,曾经存在于VB6,我不知道为什么我必须使用DirectCast,如果它们之间显然没有区别。 我偶尔会使用TryCast,因为我知道有时候Cast会失败。 然而,我不能区分CType和DirectCast。 任何人都可以告诉我简单的英文有什么区别两者(CType和DirectCast)的区别? 增加使用什么地方的例子也是有帮助的。 谢谢。
C#有和VB.NET的DirectCast相同的function吗? 我知道它有()强制转换和'as'关键字,但是那些排队到CType和TryCast。 要清楚的是,这些关键字执行以下操作; CType /()强制转换 :如果它已经是正确的types,则转换它,否则查找types转换器并调用它。 如果没有findtypes转换器,则抛出一个InvalidCastException。 TryCast /“as”关键字 :如果是正确的types,则强制转换,否则返回null。 DirectCast :如果是正确的types,则抛出它,否则抛出InvalidCastException。 在我详细说明了之后,有些人仍然回答说()是等价的,所以我会进一步扩大为什么这是不正确的。 DirectCast只允许在inheritance树上缩小或扩大转换。 它不支持像()这样的不同分支之间的转换,即: 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 […]
我是刚刚进入VB.NET的经验丰富的C / C ++ / C#程序员。 我通常使用CType(和CInt,CBool,CStr)进行强制转换,因为它的字符less,并且是我接触到的第一种投射方式,但是我也知道DirectCast和TryCast。 简单来说,DirectCast和CType之间有什么区别(效果演员,性能等)? 我了解TryCast的想法。