我有一个实现接口(interface)的类,如下所示:
public class Database : IStore
在另一个类中,我有以下成员变量;并且数据库实例在运行时动态分配给它:
private IStore store;
以及一个对存储变量进行类型检查的方法,如下所示:
if (store is Database)
ReSharper 声称条件始终为假。此外,它声称“存储为数据库”将始终为空。这是为什么?检查此接口(interface)类型成员持有的运行时对象类型的最佳方法是什么?它可能只是说这“可能不是真的”总是还是真的“永远不会”?
最佳答案
这听起来像是 R# 被混淆了,或者您有两种不同的 IStore
类型,而您正在针对一种类型进行测试,而实际上该类实现了一种不同的类型一。 (或者两种不同的 Database
类型,当然。可能性是等价的。)
您能否提供一个简短但完整的示例来说明问题?如果您将鼠标悬停在带有 as
/is
运算符的代码中的 IStore
和 Database
上,它是否显示完整的- 您期望的限定类型名称?如果您运行代码,它会进入 if
主体吗?
关于C# 和 ReSharper : Checking an object's type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286226/