2.typeof
在C#和VB.Net中都有typeof關鍵字,但它們的用法卻不一樣。
C#中typeof相當於VB.Net中的GetType,用於獲取指定類型的 Type 對象。
用法
System.Type t = typeof(int);
Console.WriteLine(t.FullName); //輸出:System.Int32
VB.Net中的TypeOf則總是與Is關鍵字一起用於構造TypeOf…Is表達式。MSDN中對該關鍵字的解釋是:比較對象引用變量與數據類型。 需要注意的是該表達式只能針對引用類型,如果把下面的示例中的i聲明為Integer則會出錯。
VB.Net用法:
Dim i As Object = 2
Console.WriteLine(TypeOf i Is Integer) '輸出:True
Console.WriteLine(Typeof i Is Double) '輸出:False
3.is
在C#和VB.Net中也都存在is關鍵字,當然它們的用法也不一樣。
C#中is 的作用是:檢查對象是否與給定類型兼容。它執行的是類型比較。MSDN中的備注:如果所提供的表達式非空,並且所提供的對象可 以強制轉換為所提供的類型而不會導致引發異常,則 is 表達式的計算結果將是 true。請注意,is 運算符只考慮引用轉換、裝箱轉換和取消 裝箱轉換。不考慮其他轉換,如用戶定義的轉換。
可以認為C#中的is 相當於VB.Net中的TypeOf…Is。
用法:
int i = 2;
Console.WriteLine(i is int); //輸出:True
Console.WriteLine(i is double); //輸出:False
VB.Net中Is 的作用是:比較兩個對象引用變量。MSDN中的備注:Is 運算符確定兩個對象引用是否引用同一個對象。但是,它不執行值比較 。如果 object1 和 object2 引用同一個對象實例,則 result 為 True;如果它們不引用同一個對象,則 result 為 False。該運算符和 TypeOf…Is一樣,也只適用於引用類型。
用法:
Dim i As String = "Hello"
Dim j AS String = "Hello"
Dim k as String = "Hello world"
Console.WriteLine(i Is j) '輸出:True
Console.WriteLine(i Is k) '輸出:False
k = j
Console.WriteLine(i Is k) '輸出:True
4.as
同樣C#和VB.Net裡面都存在as,用法也不一樣。
C#中as 的作用是:as 運算符用於在兼容的引用類型之間執行轉換。as 運算符類似於強制轉換操作。但是,如果無法進行轉換,則 as 返 回 null 而非引發異常。
expression as type 等效於 expression is type ? (type)expression : (type)null
用法:
string s = someObject as string;
If(s != null)
Console.WriteLine("someObject is a string");
VB.Net中As 的作用是:引入 As 子句,該子句標識聲明語句中的數據類型或泛型類型參數中的約束列表。
在VB.Net中這個關鍵字太常見了,就不需要過多解釋。
用法:
Private i As Integer = 3 '聲明字段
Dim j As String = "hello" '聲明變量
Sub Test(ByVal k As Boolean) '聲明參數
Public Class MyClass(Of T As {IComparable, IDisposable, Class, New}) '泛型類型約束