接口作为返回类型
接口可以是函数的返回类型。 如果是,那么最大的优势。 例如,以下代码更正在返回接口数组的位置。
public interface Interface { int Type { get; } string Name { get; } } public override Interface[] ShowValue(int a) { . . }
是的,您可以返回一个界面。
假设A
类和B
类都实现了接口Ic
:
public interface Ic { int Type { get; } string Name { get; } } public class A : Ic { . . . } public class B : Ic . . . } public Ic func(bool flag) { if (flag) return new A(); return new B(); }
在这个例子中, func
就像工厂方法 – 它可以返回不同的对象!
是的, interface
是一个非常有效的返回值。 请记住,您不是返回接口的定义,而是返回该接口的实例 。
好处很明显,请考虑以下代码:
public interface ICar { string Make { get; } } public class Malibu : ICar { public string Make { get { return "Chevrolet"; } } } public class Mustang : ICar { public string Make { get { return "Ford"; } } }
现在您可以返回许多具有各自值的不同ICar
实例。
但是,使用接口的主要原因是它们可以在一个众所周知的合同中的程序集之间共享,这样当你向某人传递ICar
,他们对此一无所知,但他们知道它有一个Make
。 此外,除公共接口外,它们不能执行任何操作。 因此,如果Mustang
有一个名为Model
的public
成员,除非它在界面中,否则他们无法实现。
是的,它可以。
好处是您可以抽象返回(和输入)类型。
public interface IFruit{ } public class Apple: IFruit{} public class Pear: IFruit{} ... public function IFruit SelectRandomFromBasket(Basket basket){ // this function can return Apple, Pear }
是的,这是可能的,这对公共职能来说是件好事。
对于你问题的部分原因 ,我不会复制粘贴其他人的答案,所以请参考现有的答案,例如:
- 列出
或IList - 方法返回一个接口
- https://stackoverflow.com/a/3564291/870604