【发布时间】:2015-05-29 12:06:13
【问题描述】:
我对 C# 有点陌生,我想知道你是否可以帮助我。
场景:
public bool ObjectImplementsSpecificInterface (object obj)
{
// 1.
if (obj is IExampleInterface)
{
return true;
}
// 2.
var tmp = obj as IExampleInterface;
if (tmp != null)
{
return true;
}
// 3.
if (typeof(IExampleInterface).IsAssignableFrom (obj.GetType ()))
{
return true;
}
}
目标:确定对象是否实现给定的接口定义IExampleInterface。
问题:
- 哪种实现是最佳实践?
- 忽略第一个问题,哪一个在技术上最正确?
- 运营商的具体区别是什么? MSDNAA 并未真正详细说明它们。
- 哪个通话时间最长/最短?
【问题讨论】:
-
当您需要更多价值时,请使用
is构造(变体 1)或as(变体 2)。 -
我无法想象这里以前没有介绍过。
-
我也是这么想的,但我只能找到谈论特定运营商的答案,而不是相互比较。如果您找到一个回答我的问题的线程,请随时链接它! :)
-
4:
typeof(IExampleInterface).IsInstanceOfType(obj)。在调用obj.GetType()之前,您应该检查obj是否为空。
标签: c# performance object interface operators