程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#和VB.NET中類型相關資料整理(3)

C#和VB.NET中類型相關資料整理(3)

編輯:關於C語言
.類型轉換

類型轉換是在編程過程中經常會遇到的。在這兩種語言中,有共同的方法,也有各自特有的方法。

共同的方法是Convert類的使用,因為Convert類是System命名空間中的。該類中包含了各種常見類型的轉換方法,比如ToInt32, ToSingle, ToBoolean等,這些方法的返回值就是需要的類型,不需要經過轉換。Convert類中通用的類型轉換方法是ChangeType,該方法返回具有指定類 型而且其值等效於指定對象的Object,這時候就需要對返回值進行顯示轉換了。

C#:

double d = 1.234
int i = (int)Convert.ChangeType(d,typeof(int));

VB.Net:

Dim d As Double = 1.234
Dim i As Integer = CInt(Convert.ChangeType(d,GetType(Integer)))

關於顯式轉換

C#中的顯式轉換的格式是(type)expression

用法:

double d = 1.234
int i = (int)d;

VB.Net中顯式轉換的格式是CType(expression,type)。MSDN中關於CType的解釋:CType 是一個“內聯函數”,這意味著轉換是 由已編譯的代碼執行的,通常不會生成函數調用。這將提高性能。

用法:

Dim d As Double = 1.234
Dim i As Integer = CType(d, Integer)

VB.Net中還有一系列函數與CType函數同屬於Conversion函數,例如CBool, CInt, CString, Hex, Format, Val等等,這些函數都是內聯函 數,具體的用法可以參考MSDN。

另外在VB.Net中還包含兩個特殊的轉換方法,DirectCast和TryCast。這兩個方法和CType的用法一樣,它們的區別見下表。

關鍵字 數據類型 參數關系 CType 任何數據類型 必須在兩種數據類型之間定義擴大轉換或收縮轉換 DirectCast 任何數據類型 一個類型必須繼承或者實現另一個類型 TryCast 僅引用類型 一個類型必須繼承或者實現另一個類型

從上表可以看出,VB.Net的TryCast和C#的as作用是一樣的。

DirectCast示例(摘自MSDN):

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

TryCast示例(摘自MSDN):

Function PrintTypeCode(ByVal obj As Object) As String
    Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
    If objAsConvertible Is Nothing Then
        Return obj.ToString() & " does not implement IConvertible"
    Else
        Return "Type code is " & objAsConvertible.GetTypeCode()
    End If
End Function

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved