How to find an object type in C#?
本问题已经有最佳答案,请猛点这里访问。
我有一些已知类型的对象的可观察集合,但是当对它们进行迭代时,我不知道当前对象的类型。
如何获取当前对象的类型?
要在运行时获取对象的类型,应该调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } |
如果只有几个不同的类型,并且根据类型采取不同的操作,则可以使用
1 2 3 4 5 6 |
另一个可能的选择是,如果设计合理并且对象在您的控制之下,让它们都实现一个接口,其中包含一个方法来获取描述类型的枚举?然后你可以打开它。
如果您有一个具有通用类型的ObservableCollection,您可以编写类似这样的内容来了解其中的内容:
1 2 3 | // Assume this is your observable collection var observableCollection = new ObservableCollection<string>(); Type type = observableCollection.GetType().GetGenericArguments()[0]; |
您可以使用gettype方法。这样地:
1 2 3 4 | ObservableCollection<object> coll = new ObservableCollection<object>(); var a = this.coll[0].GetType(); var b = this.coll[1].GetType(); |
您必须使用gettype方法,如这里描述的gettype
1 | Object.GetType() |
如果您知道类型,可以使用typeof(object)检查它们,如下所示此处描述:类型