Toán tử IS
Toán tử "is" trong C# kiểm tra xem kiểu runtime của một đối tượng có tương thích với một kiểu cho trước hay không.
Cú pháp như sau:
expr is type
Trong đó, expr là biểu thức, type là tên kiểu dữ liệu.
Ví dụ sau minh họa cách sử dụng toán tử is trong C#:
Ví dụ
using System;
class One { }
class Two { }
public class Demo {
public static void Test(object obj) {
One x;
Two y;
if (obj is One) {
Console.WriteLine("Class One");
x = (One)obj;
} else if (obj is Two) {
Console.WriteLine("Class Two");
y = (Two)obj;
} else {
Console.WriteLine("None of the classes!");
}
}
public static void Main() {
One o1 = new One();
Two t1 = new Two();
Test(o1);
Test(t1);
Test("str");
Console.ReadKey();
}
}
Kết quả
Class One
Class Two
None of the classes!
Toán tử AS
Toán tử "as" thực hiện chuyển đổi giữa các kiểu tương thích. Nó giống như một phép ép kiểu (cast operation) nhưng chỉ thực hiện chuyển đổi tham chiếu (reference conversions), chuyển đổi nullable và boxing conversions. Toán tử as không thể thực hiện các chuyển đổi khác như chuyển đổi do người dùng định nghĩa, nên dùng cast expressions thay thế.
Ví dụ sử dụng as để chuyển đổi:
string s = obj[i] as string;
Thử chạy mã sau để làm việc với toán tử 'as' trong C#:
Ví dụ
using System;
public class Demo {
public static void Main() {
object[] obj = new object[2];
obj[0] = "jack";
obj[1] = 32;
for (int i = 0; i < obj.Length; ++i) {
string s = obj[i] as string;
Console.Write("{0}: ", i);
if (s != null)
Console.WriteLine("'" + s + "'");
else
Console.WriteLine("This is not a string!");
}
Console.ReadKey();
}
}
Kết quả
0: 'jack'
1: This is not a string!