using System;
using System.Threading;
using System.Diagnostics;
using System.Text;
using System.Collections.Generic;
namespace Example
{
class Program
{
static void Main(string[] args)
{
List<A> list = new List<A>();
list.Add(new B("anton", 25));
list.Add(new C("anton", 0, 545));
list.Add(new D("anton", 25, 545, 545474));
list.Add(new B("anhjyton", 25));
list.Add(new C("anton", 25, 545));
list.Add(new C("antofn", 25, 1111));
foreach (A item in list)
{
B b = item as B;
if (b != null)
{
Console.WriteLine($"{b.Name} {b.age}");
}
C c = item as C;
if (c != null)
{
Console.WriteLine($"{c.Name} {c.age} {c.money}");
}
D d = item as D;
if (d != null)
{
Console.WriteLine($"{d.Name} {d.age} {c.money} {d.SSN}");
}
}
}
}
abstract class A
{
public string Name { get; set; }
public A(string name)
{
Name = name;
}
}
class B : A
{
public int age { get; set; }
public B(string name, int age)
: base(name)
{
this.age = age;
}
}
class C : B
{
public int money { get; set; }
public C(string name, int age, int money)
: base(name, age)
{
this.money = money;
}
}
sealed class D : C
{
public D(string name, int age, int money, int SSN)
: base(name, age, money)
{
this.SSN = SSN;
}
public int SSN { get; set; }
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCm5hbWVzcGFjZSBFeGFtcGxlCnsKICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBMaXN0PEE+IGxpc3QgPSBuZXcgTGlzdDxBPigpOwogICAgICAgICAgICBsaXN0LkFkZChuZXcgQigiYW50b24iLCAyNSkpOwogICAgICAgICAgICBsaXN0LkFkZChuZXcgQygiYW50b24iLCAwLCA1NDUpKTsKICAgICAgICAgICAgbGlzdC5BZGQobmV3IEQoImFudG9uIiwgMjUsIDU0NSwgNTQ1NDc0KSk7CiAgICAgICAgICAgIGxpc3QuQWRkKG5ldyBCKCJhbmhqeXRvbiIsIDI1KSk7CiAgICAgICAgICAgIGxpc3QuQWRkKG5ldyBDKCJhbnRvbiIsIDI1LCA1NDUpKTsKICAgICAgICAgICAgbGlzdC5BZGQobmV3IEMoImFudG9mbiIsIDI1LCAxMTExKSk7CiAgICAgICAgICAgIGZvcmVhY2ggKEEgaXRlbSBpbiBsaXN0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBCIGIgPSBpdGVtIGFzIEI7CiAgICAgICAgICAgICAgICBpZiAoYiAhPSBudWxsKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIntiLk5hbWV9IHtiLmFnZX0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBDIGMgPSBpdGVtIGFzIEM7CiAgICAgICAgICAgICAgICBpZiAoYyAhPSBudWxsKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQie2MuTmFtZX0ge2MuYWdlfSB7Yy5tb25leX0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEIGQgPSBpdGVtIGFzIEQ7CiAgICAgICAgICAgICAgICBpZiAoZCAhPSBudWxsKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIntkLk5hbWV9IHtkLmFnZX0ge2MubW9uZXl9IHtkLlNTTn0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBhYnN0cmFjdCBjbGFzcyBBCiAgICB7CiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0KCiAgICAgICAgcHVibGljIEEoc3RyaW5nIG5hbWUpCiAgICAgICAgewogICAgICAgICAgICBOYW1lID0gbmFtZTsKICAgICAgICB9CiAgICB9CiAgICBjbGFzcyBCIDogQQogICAgewogICAgICAgIHB1YmxpYyBpbnQgYWdlIHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgQihzdHJpbmcgbmFtZSwgaW50IGFnZSkKICAgICAgICAgICAgOiBiYXNlKG5hbWUpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLmFnZSA9IGFnZTsKICAgICAgICB9CiAgICB9CiAgICBjbGFzcyBDIDogQgogICAgewogICAgICAgIHB1YmxpYyBpbnQgbW9uZXkgeyBnZXQ7IHNldDsgfQogICAgICAgIHB1YmxpYyBDKHN0cmluZyBuYW1lLCBpbnQgYWdlLCBpbnQgbW9uZXkpCiAgICAgICAgICAgIDogYmFzZShuYW1lLCBhZ2UpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLm1vbmV5ID0gbW9uZXk7CiAgICAgICAgfQogICAgfQogICAgc2VhbGVkIGNsYXNzIEQgOiBDCiAgICB7CgogICAgICAgIHB1YmxpYyBEKHN0cmluZyBuYW1lLCBpbnQgYWdlLCBpbnQgbW9uZXksIGludCBTU04pCiAgICAgICAgICAgIDogYmFzZShuYW1lLCBhZ2UsIG1vbmV5KQogICAgICAgIHsKICAgICAgICAgICAgdGhpcy5TU04gPSBTU047CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IFNTTiB7IGdldDsgc2V0OyB9CiAgICB9Cn0=