接口作为返回类型

时间:2013-03-13 17:23:18

标签: c# interface

接口可以是函数的返回类型。如果是的话那就是优势。例如是以下代码更正在返回接口数组的位置。

public interface Interface
{
    int Type { get; }
    string Name { get; }
}

public override Interface[] ShowValue(int a)
{
.
.

}

4 个答案:

答案 0 :(得分:17)

是的,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有一个名为public的{​​{1}}成员,除非它在界面中,否则他们无法达到此目的。

答案 1 :(得分:16)

是的,您可以返回一个界面。

我们说类AB每个实现接口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就像工厂方法 - 它可以返回不同的对象!

答案 2 :(得分:8)

是的,可以。

好处是你可以抽象返回(和输入)类型。

public interface IFruit{ }

public class Apple: IFruit{}

public class Pear: IFruit{}

...

public function IFruit SelectRandomFromBasket(Basket<IFruit> basket){
  // this function can return Apple, Pear
}

答案 3 :(得分:6)

是的,这是可能的,这对公共职能来说是件好事。

对于为什么部分您的问题,我不会复制粘贴其他人的答案,因此请参阅现有答案,例如: