Jawaban:
Coba yang berikut ini
typeField == typeof(string)
typeField == typeof(DateTime)
The typeofoperator dalam C # akan memberikan Typeobjek untuk jenis yang bernama. Typeinstance dapat dibandingkan dengan ==operator sehingga ini adalah metode yang baik untuk membandingkannya.
Catatan: Jika saya ingat dengan benar, ada beberapa kasus di mana ini rusak ketika jenis yang terlibat adalah antarmuka COM yang tertanam ke dalam rakitan (melalui NoPIA). Tidak terdengar seperti ini di sini.
Anda dapat menggunakannya untuk is operator . Anda kemudian dapat memeriksa apakah objek adalah tipe spesifik dengan menulis:
if (myObject is string)
{
DoSomething()
}
Anda dapat membandingkan untuk tipe yang sama persis menggunakan:
class A {
}
var a = new A();
var typeOfa = a.GetType();
if (typeOfa == typeof(A)) {
}
typeof mengembalikan objek Type dari kelas yang diberikan.
Tetapi jika Anda memiliki tipe B, yang mewarisi dari A, maka perbandingan ini salah. Dan Anda mencari IsAssignableFrom .
class B : A {
}
var b = new B();
var typeOfb = b.GetType();
if (typeOfb == typeof(A)) { // false
}
if (typeof(A).IsAssignableFrom(typeOfb)) { // true
}
Jika instance Anda adalah Type:
Type typeFiled;
if (typeField == typeof(string))
{
...
}
tetapi jika instance Anda adalah objectdan bukan Typepenggunaan, asoperator:
object value;
string text = value as string;
if (text != null)
{
// value is a string and you can do your work here
}
ini memiliki keuntungan untuk mengkonversi valuehanya sekali ke tipe yang ditentukan.
http://msdn.microsoft.com/en-us/library/system.type.gettype.aspx
Console.WriteLine("typeField is a {0}", typeField.GetType());
yang akan memberi Anda sesuatu seperti
typeField is a String
typeField is a DateTime
atau
http://msdn.microsoft.com/en-us/library/58918ffs(v=vs.71).aspx