【发布时间】:2017-08-07 21:21:03
【问题描述】:
我有一个名为 AEntity 的抽象类,这是我游戏中实体的基类。
我还有几个接口来“标记”实体,例如:
interface EffectEntity<T> where T : AEntity
{
void UpdateEffect();
}
在我的程序的一部分中,我有一个 List<AEntity> 和一个名为 add 的方法。
此列表不能包含EffectEntity。这是我添加方法的代码:
if (Item is EffectEntity<T>)
{
throw new Exception("Cannot add an effectEntity to the still entities");
}
else allStillEntities.Add(Item);
这不会引发任何错误,但是当我将行 if(Item is EffectEntiy<T>) 更改为 if(default(T) is EffectEntity<T>) 时,它会发出警告 CS0148:“给定的表达式永远不是提供的类型 ('EffectEntity<T>') 类型”
这是为什么?他们不应该产生相同的结果吗?
是的,当然,左侧使用Item 的版本可能效率更高,但我仍然很好奇。
【问题讨论】:
标签: c# .net operators compiler-warnings