這最近突然出現在我的腦海中:
我們有一個介面:
interface IPerson { }
和一個實作所述介面的類:
class Person : IPerson{ }
現在,初始化 Person-Variable 的首選方法是什么,這是:
Person person = new Person();
或者:
IPerson person = new Person();
使用型別推斷和智能感知
var person = new Person();
顯示 person 是 Person 型別,而不是 IPerson。我也在想這樣的事情:
List<IPerson> persons;
與這個:
List<Person persons;
在這種情況下,在未來的重構等方面,宣告變數或定義集合的首選方式是什么。如果這是一個重復的問題,請告訴。
最好的祝福
uj5u.com熱心網友回復:
通常,您更喜歡使用介面。假設您有一個串列,Person并且您還有一個人,例如SuperHero:
class SuperHero : IPerson{ }
在這種情況下,SuperHero可以繼承自Person但作為一個例子我們可以假設沒有意義。所以你有 2 個類實作IPerson.
如果你有一個 type 的變數Person,你就不能管理SuperHeros。如果你有一個List<Person>你只能存盤Person,而不是SuperHeros。
如果您需要使用 any IPerson,則必須使用介面:
List<IPerson> list = new List<IPerson>();
list.Add(new Person());
list.Add(new SuperHero());
還有一點關于“var”。如果您使用 var,編譯器會將 var 更改為您在右側使用的型別。您可以強制使用強制轉換:
var person = (IPerson)new Person();
當您使用 OLE 自動化和 COM 物件時,在 .NET 中您需要實作介面。該實作具有 Class 后綴。但是您可以使用介面,而無需使用 Class 后綴。更多資訊在這里:https ://docs.microsoft.com/es-es/archive/blogs/mshneer/vs-2010-compiler-error-interop-type-xxx-cannot-be-embedded-use-the-applicable-介面代替
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462505.html
