Yanıtlar:
Takip etmeyi dene
typeField == typeof(string)
typeField == typeof(DateTime)
typeofC # operatör size verecektir Typeadında türü için nesne. Typeörnekler ==operatörle karşılaştırılabilir, bu nedenle bunları karşılaştırmak için iyi bir yöntemdir.
Not: Doğru hatırlıyorsam, ilgili türler derlemelere (NoPIA aracılığıyla) gömülü COM arabirimleri olduğunda bunun bozulduğu bazı durumlar vardır. Buradaki durum böyle görünmüyor.
Bunun için is operatörü kullanabilirsiniz . Ardından, nesnenin belirli bir tür olup olmadığını yazarak kontrol edebilirsiniz:
if (myObject is string)
{
DoSomething()
}
Aşağıdakileri kullanarak tam olarak aynı tür için karşılaştırma yapabilirsiniz:
class A {
}
var a = new A();
var typeOfa = a.GetType();
if (typeOfa == typeof(A)) {
}
typeof, belirli bir sınıftan Type nesnesini döndürür.
Ancak A'dan miras alan bir B türünüz varsa, bu karşılaştırma yanlıştır. Ve IsAssignableFrom'u arıyorsunuz .
class B : A {
}
var b = new B();
var typeOfb = b.GetType();
if (typeOfb == typeof(A)) { // false
}
if (typeof(A).IsAssignableFrom(typeOfb)) { // true
}
Örneğiniz bir Type:
Type typeFiled;
if (typeField == typeof(string))
{
...
}
ancak örneğiniz bir objectve bir Typekullanım değilse , asoperatörü kullanın :
object value;
string text = value as string;
if (text != null)
{
// value is a string and you can do your work here
}
bunun valueyalnızca bir kez belirtilen türe dönüştürme avantajı vardır .
http://msdn.microsoft.com/en-us/library/system.type.gettype.aspx
Console.WriteLine("typeField is a {0}", typeField.GetType());
sana benzer bir şey verecek
typeField is a String
typeField is a DateTime
veya
http://msdn.microsoft.com/en-us/library/58918ffs(v=vs.71).aspx