接口可以是函数的返回类型。如果是,那有什么好处。例如,以下代码在返回接口数组的位置是否正确。
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
中就像工厂方法——它可以返回不同的对象!
是的 aninterface
是一个非常有效的返回值。请记住,您返回的不是接口的定义,而是该接口的一个实例。
好处很明显,考虑下面的代码:
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
名为的成员Model
,除非它在界面中,否则他们无法访问。
是的,它可以。
好处是您可以抽象返回(和输入)类型。
public interface IFruit{ }
public class Apple: IFruit{}
public class Pear: IFruit{}
...
public function IFruit SelectRandomFromBasket(Basket<IFruit> basket){
// this function can return Apple, Pear
}
是的,这是可能的,这对公共职能来说是件好事。
对于您问题的为什么部分,我不会复制粘贴其他人的答案,因此请参考现有答案,例如:
是的,我将从 golang 的角度回答您的问题,我们可以使用接口作为返回类型,这意味着您可以返回任何数据类型,例如 int、float、string 等。
接口 = 任何数据类型
package main
import (
"fmt"
)
func any (u interface{}) interface{} {
fmt.Printf("Type: %T\n",u)
return u
}
func main(){
fmt.Println("value: ",any(5))
fmt.Println(any("testing"))
}