【发布时间】:2012-11-23 18:57:22
【问题描述】:
假设我有以下代码:
class Foo: IFoo {
public string fooProp { get; set; }
}
interface IFoo {
string fooProp {get; set; }
}
这两者之间是否可能存在不同的行为:
Foo x = new Foo();
someMethod(x);
和:
IFoo x = new Foo();
someMethod(x);
?
【问题讨论】:
-
鉴于您上面显示的示例,不。假设
someMethod的签名采用IFoo -
用接口应该是不可能的,不。 (与抽象/虚拟类/成员和其他此类继承概念相反。)您是否注意到表明它可以不同的行为?还是这主要是一种无聊的好奇心?
-
嗯,我看到的问题更复杂,但我认为本质上唯一的区别是它是由类声明还是由接口声明,并且它的行为不同。
-
如果你有 someMethod 的两个重载版本,一个是 Foo,另一个是 IFoo,那么你可以让它做两件不同的事情。
-
您能否提供一个简短但完整的问题示例?你给出的例子没有明显的区别,如果我们有一个更完整的例子,我相信有人可以很容易地发现发生了什么。
标签: c#