C# 检查对象的实际类型
我有:C# 检查对象的实际类型,c#,C#,我有: A类 B类:A C类:B类 D类:B 我有一份清单 其中存储了C和D的实际对象 如何检查列表中的对象是否为B的子类型 目前,我正在做item.GetType()==typeof(C)| | item.GetType()==typeof(D) 这是可行的,但是如果我有两个以上的类是从B继承的呢?把它们都写下来似乎是多余的。有没有办法检查对象是否为B的子类型?谢谢 您可以使用is关键字 if(item is B) 参考:您可以使用is关键字 if(item is B) 参考资料:您考虑过
A类
B类:A
C类:B类
D类:B
我有一份清单
其中存储了C和D的实际对象
如何检查列表中的对象是否为B的子类型
目前,我正在做item.GetType()==typeof(C)| | item.GetType()==typeof(D)
这是可行的,但是如果我有两个以上的类是从B继承的呢?把它们都写下来似乎是多余的。有没有办法检查对象是否为B的子类型?谢谢 您可以使用
is
关键字
if(item is B)
参考:您可以使用
is
关键字
if(item is B)
参考资料:您考虑过使用强制转换吗? 如果你不知道它是什么,就去看看 如果强制转换操作涉及基类型和派生类型,则 是抛出异常的风险。在测试之前测试兼容性 实际上,C#提供了两个操作员来允许 安全浇铸,不会导致任何异常。这两个运营商是: “Is”运算符用于检查从一个引用类型到另一个引用类型的转换是否成功,并确定对象的类型,而不使用 铸造它。
“As”运算符用于获取转换值,前提是转换可以成功进行,因此效率更高
你考虑过使用强制转换吗? 如果你不知道它是什么,就去看看 如果强制转换操作涉及基类型和派生类型,则 是抛出异常的风险。在测试之前测试兼容性 实际上,C#提供了两个操作员来允许 安全浇铸,不会导致任何异常。这两个运营商是: “Is”运算符用于检查从一个引用类型到另一个引用类型的转换是否成功,并确定对象的类型,而不使用 铸造它。
“As”运算符用于获取转换值,前提是转换可以成功进行,因此效率更高