Jor*_*oom 1 c# implementation interface
采用以下简单示例:
interface IVehicle {
}
class Car : IVehicle {
}
Run Code Online (Sandbox Code Playgroud)
现在我应该能够做到以下几点:
IVehicle vehicle = new Car();
Run Code Online (Sandbox Code Playgroud)
事实上,如果我如上所述创建这些基类,我不会收到任何编译错误(代码运行.)
但是在我的项目中,无论我在做什么,基本上都是这样的(据我所知),我得到以下错误:
Cannot implicitly convert type 'Namespace.Path.Car' to 'IVehicle'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)
有时(如在不同的代码位置,不是不同的编译),显式转换有效,有时它会编译,但会创建运行时异常(无效转换).为什么基本示例没有问题,而更详细的类(但仍然是直接实现接口的单个类)具有所有这些问题?
在某些情况下,它实际上会出现这个编译时错误:
Cannot implicitly convert type 'Namespace.Path.IVehicle' to 'IVehicle'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)
我想我错过了这个隐式转换工作所需的一些重要条件,但是我没有发现什么区别导致简单的例子工作,更详细的类失败如此奇怪.我唯一注意到的是编译时错误只包括第一种类型的命名空间(如上面两个错误所示),但我不记得这是否正常.
为了消除任何环境原因,我使用以下代码创建了一个测试用例:
ISimpleInterface simple = new SimpleImplementation();
IComplexInterface complex = new ComplexImplementation();
Run Code Online (Sandbox Code Playgroud)
上面导致第二行的编译时错误(表明它不能进行隐式转换).
| 归档时间: |
|
| 查看次数: |
7202 次 |
| 最近记录: |