如果我有
ICollection<string> collection = new List<string>();
話,我想「收藏」將只能訪問那些在ICollection接口或其聲明的屬性祖先接口。這就是OOP的說法。
但實際上我們有權訪問List的所有屬性。爲什麼?
希望我不會在這裏問一些愚蠢的問題。我的假設是錯誤的。
編輯:讓我嘗試什麼我想要從IEnumerable<string>
說
public interface myInterface {
public void InterfaceMethod();
}
public class MyClass : myInterface
{
public MyClass()
{
}
public void InterfaceMethod()
{
Console.WriteLine("InterfaceMethod called");
}
public void AnotherMethod() {
Console.WriteLine("AnotherMethod called");
}
}
public class Program
{
private static IContainer Container { get; set; }
static void Main(string[] args)
{
myInterface myObject = new MyClass();
myObject.InterfaceMethod();
myObject.AnotherMethod(); //Now myObject is not aware of AnotherMethod, which is correct
}
}
顯示一些例子你是什麼意思'但實際上我們有訪問列表的所有屬性。爲什麼?' –
這是一個泛化,但你可以考慮ICollection作爲一個圍繞T []構建的接口,即一個T數組。你是否想知道爲什麼T []對象允許你訪問它擁有的所有Ts? –
在Visual Studio中,只需在集合旁邊寫點,您將看到列出的所有方法,但在F12上ICollection中,您將看到很少的方法。 –