.NET Framework 2.0上的CType等效项

时间:2009-01-22 12:33:08

标签: .net vb.net

在.NET Framework中的VB.NET CINT(VB.NET) is Integer.Parse中,(VB.NET)CType的.NET等价物是什么?

3 个答案:

答案 0 :(得分:2)

CType被翻译为演员,这是一个语言级问题。例如,在发出的IL中,没有将object转换为string。 (旁注:如果类型是值类型,它将转换为unbox指令,但它是另一个故事;运行时不区分对FooBar的引用引用类型,为了简单起见,我也忽略了由InvalidCastException指令完成的抛出castclass

Integer.ParseCInt基本上对源对象(字符串)执行一些处理并将其转换为等效整数。他们做点什么。 CType只是指示语言编译器关于类型转换。

为了完整起见,铸造的IL等价物是:

  1. castclass如果类型是引用类型。
  2. unbox如果类型是值类型。
  3. 但是,Visual Basic编译器将表达式转换为对Microsoft.VisualBasic.CompilerServices.Conversions方法之一的调用。

答案 1 :(得分:0)

对于转换对象,CType()适用于VB,但不适用于c#(除非您引用Microsoft.VisualBasic.dll)。您还可以使用DirectCast()TryCast()

如果要转换为特定的本机类型,则可以使用Convert类中的方法执行此操作。 (与Parse / TryParse不同,这些是IsNumeric()CInt()的混合

例如

Convert.ToInt32()
Convert.ToString()
Convert.ToBoolean()

各种类型的其他人都有很多。

答案 2 :(得分:0)

您可以随时执行以下操作:

var thisInteger = (Int64)objectToconvert;

var thisComplicatedObject = (BAL.ComplicatedObject)objectToConvert;

基本上将你需要转换的类型放在前面的parens中。这个方法没有带回做ctype()操作的好的智能感知,你可以在下一行获得它。