这个问题已经有了答案: 类型检查:typeof,GetType或is? C# generic list 如何获取 T 的类型?[重复]
这个问题已经有了答案:
类型检查:typeof,GetType或is?
C# generic list 如何获取 T 的类型?[重复]
我有一个可观察对象的收集,其中包含几个已知类型的对象,但是当遍历它们时,我不知道当前对象的类型。
如何获取当前对象的类型?
如果只有几种不同的类型,并且您根据类型执行不同的操作,则可以使用is检查每种类型:
is
foreach(var thing in collection){ if(thing is TypeA){ doTypeA(); }else if(thing is TypeB){ doTypeB(); }
另一个可能的选项是,如果它在设计上是有意义的并且对象在您的控制下,则可以使它们都实现包括获取描述该类型的枚举的方法的接口。然后,您可以对其进行切换。
在运行时获取对象的类型,你需要调用GetType()函数。如果你知道对象仅可能是某些已知类型,可以使用switch语句:
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; }
用户名或电子邮箱地址
密码