如何在C#中找到对象类型?

时间:2015-11-18 09:15:34

标签: c# object types casting

我有一个可观察的几个已知类型的对象集合,但是当迭代它们时我不知道当前对象的类型。

如何获取当前对象的类型?

5 个答案:

答案 0 :(得分:0)

您必须使用GetType方法,如GetType

所述
Object.GetType()

如果您已知类型,可以使用typeof(对象)检查它们 这里描述:typeof

答案 1 :(得分:0)

您可以使用GetType方法。 像这样:

ObservableCollection<object>  coll = new ObservableCollection<object>();

    var a = this.coll[0].GetType();
    var b = this.coll[1].GetType();

答案 2 :(得分:0)

如果您有一个具有泛型类型的ObservableCollection,您可以编写类似这样的内容来了解​​其中的内容:

// Assume this is your observable collection
var observableCollection = new ObservableCollection<string>();
Type type = observableCollection.GetType().GetGenericArguments()[0];

答案 3 :(得分:0)

如果只有几种不同类型,并且您根据类型采取不同的操作,则可以使用is检查每种类型:

foreach(var thing in collection){
    if(thing is TypeA){
        doTypeA();
    }else if(thing is TypeB){
        doTypeB();
}

另一个可能的选项,如果它具有设计意义并且对象在您的控制之下,那么它们是否都要实现一个接口,其中包含一个获取Enum描述类型的方法?然后你可以打开它。

答案 4 :(得分:0)

要在运行时获取某种类型的对象,您应该调用GetType()。如果您知道对象可以只是几种已知类型,则可以使用switch语句:

Type t = obj.GetType();

switch (t.Name)
{
    case "Int32":
        Console.WriteLine("int type");
        break;
    case "String":
        Console.WriteLine("string type");
         break;
    default:
        Console.WriteLine("Another type");
        break;
}