簡體   English   中英

接口作為返回類型

[英]interface as return type

接口可以是 function 的返回類型。 如果是,那有什么好處。 例如,以下代碼在返回接口數組的位置是否正確。

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有一個名為Modelpublic成員,除非它在界面中,否則他們無法實現。

是的,它可以。

好處是您可以抽象返回(和輸入)類型。

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"))
}

Output

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM