簡體   English   中英

C# - 如何正確使用接口的實現

[英]C# - How to properly use an implementation of an interface

public interface IMyInterface
{
   List<string> MyList(string s)
}

public class MyClass : IMyInterface
{
   public List<string> MyList(string s)
}

有什么區別:

[Method]
MyClass inst = new MyClass();
...

要么:

[Method]
var inst = new MyClass() as IMyInterface;
...

要么:

[Method]
IMyInterface inst = new MyClass();
...

使用IMyInterface的實現的正確方法是什么?

第二個是可怕的。 它真的相當於

IMyInterface inst = new MyClass();

但它甚至沒有檢查MyClass實現了接口。 這只是一種使用var的方法,但在其他地方明確指定類型。 伊克。

一般來說,使用接口類型聲明變量更清晰(如上所述,或者第三個選項),如果這是您所依賴的 - 它使用戶清楚地知道您不需要該類聲明的任何額外成員。 請參閱“對接口進行編程意味着什么?” 欲獲得更多信息。

請注意,這與實現接口無關。 MyClass實現接口的類。 這與使用接口的實現有關。

MyClass inst = new MyClass();

它使用具體類型創建對象。 多態性是不可實現的。

var inst = new MyClass() as IMyInterface

編譯器能夠根據強制轉換推斷它的類型。 類型是IMyInterface ...

IMyInterface inst = new MyClass();

在我看來最好的。 通過使用MyInterface,您可以實現多態,在運行時更改inst指向的內容。

暫無
暫無

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

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