Dim?txt?As?TextBox?=?CType(ctrl,?TextBox)
創(chuàng)新互聯(lián)公司專注于燈塔網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供燈塔營銷型網站建設,燈塔網站制作、燈塔網頁設計、燈塔網站官網定制、重慶小程序開發(fā)服務,打造燈塔網絡公司原創(chuàng)品牌,更為您提供燈塔網站排名全網營銷落地服務。
當然也可以用directcast方法,實現(xiàn)的功能一樣,trycast可以避免類型不符的時候不報錯的功能。
完全不相的類型之間則是不能轉換的,比如你的ctrl里實際上是一個button,那么無論如何都不可能給你轉換成textbox,用上面的方法的話會拋出一個異常。
CType 函數(shù)
任何數(shù)據(jù)類型
必須在兩種數(shù)據(jù)類型之間定義擴大轉換或收縮轉換
引發(fā) InvalidCastException
DirectCast
任何數(shù)據(jù)類型
一個類型必須繼承自或者實現(xiàn)另一個類型
引發(fā) InvalidCastException
TryCast
僅引用類型
一個類型必須繼承或者實現(xiàn)另一個類型
返回 Nothing (Visual Basic)
這屬于裝箱拆箱。我舉個例子你就明白了:
Dim x As Integer = 5
Dim o As Object = x '裝箱
Dim y As Integer = CType(o, Integer) '拆箱(在Option Strict Off的情況下,直接用o給y賦值,會發(fā)生自動轉換,也就是說在這種情況下,你不必顯式調用CType函數(shù))
另外:VB.NET支持后期綁定,所以你也可以不進行拆箱,直接在Object類型下就可以調用它的屬性和方法
比如,下面的語句在Option Strict Off是是合法的
Dim s As String = 886
Dim i As Integer = "53"
Dim f As Object = New Form()
f.Show() '注意,f是Object類型的
總之,VB.NET的語法要比C#靈活得多
返回表達式顯式地轉換為指定數(shù)據(jù)類型、對象、結構、類或接口后的結果。
CType(expression, typename)各部分說明expression任何有效的表達式。如果 expression 的值超出了 typename 所允許的范圍,將會出現(xiàn)錯誤。
typename任何在 Dim 語句的 AS 子句內合法的表達式,即任何數(shù)據(jù)類型、對象、結構、類或接口的名稱。
備注CType 采用內聯(lián)方式編譯,即轉換代碼是計算表達式的代碼的一部分。因為不需要調用完成轉換的過程,因此執(zhí)行速度更快。
示例本示例使用 CType 函數(shù)將表達式轉換為指定的數(shù)據(jù)類型。
Cint(TextBox1.Text) '轉換為Integer
Cdbl(TextBox1.Text) '轉換為Double