Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查对象的实际类型_C# - Fatal编程技术网

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”运算符用于获取转换值,前提是转换可以成功进行,因此效率更高