在.NET Framework中的VB.NET CINT(VB.NET) is Integer.Parse
中,(VB.NET)CType的.NET等价物是什么?
答案 0 :(得分:2)
CType
被翻译为演员,这是一个语言级问题。例如,在发出的IL中,没有将object
转换为string
。 (旁注:如果类型是值类型,它将转换为unbox
指令,但它是另一个故事;运行时不区分对Foo
和Bar
的引用引用类型,为了简单起见,我也忽略了由InvalidCastException
指令完成的抛出castclass
。
Integer.Parse
和CInt
基本上对源对象(字符串)执行一些处理并将其转换为等效整数。他们做点什么。 CType
只是指示语言编译器关于类型转换。
为了完整起见,铸造的IL等价物是:
castclass
如果类型是引用类型。unbox
如果类型是值类型。但是,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()操作的好的智能感知,你可以在下一行获得它。