2009-01-22 106 views

回答

2

CType被翻譯爲一個強制轉換,這是一個語言級別的問題。例如,在發射的IL中,不存在例如將object鑄造成string的情況。 (注意:如果類型是值類型,它將翻譯爲unbox指令,但是這是另一回事;運行時根本不區分對FooBar引用類型的引用,爲簡單起見,I也忽略了InvalidCastException這是由castclass指令完成的)。

Integer.Parse and CInt基本上對源對象(字符串)做了一些處理並將其轉換爲等效整數。他們做一些事情。 CType只是指示語言編譯器關於類型轉換。

爲了完整起見,IL相當於鑄造的是:

  1. castclass如果類型是引用類型。
  2. unbox如果該類型是值類型。

但是,Visual Basic編譯器將表達式轉換爲對Microsoft.VisualBasic.CompilerServices.Conversions方法之一的調用。

0

對於鑄造對象,CType()適用於VB,但不適用於c#(除非您參考Microsoft.VisualBasic.dll)。您也可以使用DirectCast()TryCast()

如果您將轉換爲特定的本機類型,則可以使用Convert類中的方法來執行此操作。 (不一樣Parse/TryParse,那些是IsNumeric()CInt()雜種)

例如

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

還有一堆別人爲各種類型。

0

你總是可以做這樣的事情:

var thisInteger = (Int64)objectToconvert; 

var thisComplicatedObject = (BAL.ComplicatedObject)objectToConvert; 

基本上把你需要轉換爲在前述括號類型。這種方法並沒有帶來很好的智能感知,即做ctype()操作,但你可以在下一行看到它。

+0

這是C#等價物,而不是.NET。 – 2009-01-22 15:54:12

相關問題