我是一名初学者,对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;
}
}
目标:确定对象o是否实现了给定接口定义IExampleInterface
。
问题:
- 哪种实现方式是最佳实践?
- 不考虑第一个问题,哪一种是技术上最正确的?
- 这些运算符的具体区别是什么?MSDNAA在它们上面没有真正详细的说明。
- 哪个调用需要最长/最短时间?
is
结构(变体1)或as
(变体2)。 - General-Doomertypeof(IExampleInterface).IsInstanceOfType(obj)
。在调用obj.GetType()
之前,应该检查obj
是否为 null。 - user4003407