我很難理解在C#中的繼承。假設,我有兩班這樣無法檢索方法一旦添加列表<object>在c#
public class Base
{
public void print()
{
Console.WriteLine("this is a BASE method");
}
}
public class Derived : Base
{
public void print()
{
Console.WriteLine("this is a DERIVED method");
}
}
現在當我創建一個
List<object>
並嘗試添加兩個對象 喜歡這一點,並試圖訪問該方法時,我不能夠這樣做
class Program
{
static void Main()
{
List<object> lists = new List<object>();
lists.Add(new Base());
lists.Add(new Derived());
foreach (var a in lists)
{
}
Console.ReadLine();
}
}
但當我添加兩個整數值並嘗試訪問它,我能夠訪問它,這怎麼可能?
static void Main()
{
List<object> lists = new List<object>();
lists.Add(4);
lists.Add(5);
foreach (var a in lists)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
我如何能夠獲得整數值,甚至沒有將它,我在這裏缺少一些關鍵的概念,請幫助我理解
更新1
也讓我嘗試解釋我的問題一次,當我想從添加列表中調用方法時,我必須將其轉換爲相應的類型,如下所示:
A a = lists[0] as A;
B b = lists[1] as B;
C c = lists[2] as C;
a.print();
b.print();
c.print();
但是當我添加int值列表這樣
List<object> lists = new List<object>();
lists.Add(4);
lists.Add(5);
foreach (var a in lists)
{
Console.WriteLine(a);
}
爲什麼是沒有必要先將其轉換成int和然後打印
我知道如何使這個清單工作在我的例子,但我很困惑如何可以打印一個整數,而無需先轉換它...謝謝 –