static void Main(string[] args) { StructArray <int> a = new StructArray <int>(3); a.Array[0] = 0; a.Array[1] = 1; a.Array[2] = 2; for (int i = 0; i < a.Array.Length; i++) { Console.WriteLine(a.Array[i]); } RefArray <StructArray <double> > b = new RefArray <StructArray <double> >(3); b.Array[0] = new StructArray <double>(5); b.Array[1] = new StructArray <double>(10); b.Array[2] = new StructArray <double>(1005); Console.WriteLine(); for (int i = 0; i < b.Array.Length; i++) { Console.WriteLine(b.Array[i]); } BaseArray <Base> c = new BaseArray <Base>(3); c.Array[0] = new Base(); c.Array[1] = new Derived(); c.Array[2] = CreateInstance <Base>(); Console.WriteLine(); for (int i = 0; i < c.Array.Length; i++) { Console.WriteLine(c.Array[i]); } BaseArray <Derived> d = new BaseArray <Derived>(3); d.Array[0] = new Derived(); // Base 형식은 여기에 할당 할 수 없다. d.Array[1] = CreateInstance <Derived>(); d.Array[2] = CreateInstance <Derived>(); Console.WriteLine(); for (int i = 0; i < d.Array.Length; i++) { Console.WriteLine(d.Array[i]); } BaseArray <Derived> e = new BaseArray <Derived>(3); e.CopyyArray <Derived>(d.Array); Console.WriteLine(); Console.WriteLine(e.Array); InterfaceArray <intf> f = new InterfaceArray <intf>(3); Console.WriteLine(); Console.WriteLine(f.Array); }
static void Main(string[] args) { StructArray <int> a = new StructArray <int>(3); for (int i = 0; i < a.Array.Length; i++) { a.Array[i] = i; } RefArray <StructArray <double> > b = new RefArray <StructArray <double> >(3); b.Array[0] = new StructArray <double>(5); b.Array[1] = new StructArray <double>(10); b.Array[2] = new StructArray <double>(1005); BaseArray <Base> c = new BaseArray <Base>(3); c.Array[0] = new Base(); c.Array[1] = new Derived(); c.Array[2] = CreateInstance <Base>(); BaseArray <Derived> d = new BaseArray <Derived>(3); d.Array[0] = new Derived(); d.Array[1] = CreateInstance <Derived>(); d.Array[2] = CreateInstance <Derived>(); BaseArray <Derived> e = new BaseArray <Derived>(3); e.CopyArray <Derived>(d.Array); for (int i = 0; i < a.Array.Length; i++) { Console.WriteLine(a.Array[i]); } for (int i = 0; i < b.Array.Length; i++) { Console.WriteLine(b.Array[i]); } for (int i = 0; i < c.Array.Length; i++) { Console.WriteLine(c.Array[i]); } for (int i = 0; i < d.Array.Length; i++) { Console.WriteLine(d.Array[i]); } for (int i = 0; i < e.Array.Length; i++) { Console.WriteLine(e.Array[i]); } InterfaceArray <SthClass> f = new InterfaceArray <SthClass>(3); SthClass g = new SthClass(); for (int i = 0; i < f.Array.Length; i++) { f.Array[i] = g.Method(); Console.WriteLine(f.Array[i]); } }
static void Main(string[] args) { // 값 형식으로 제약 StructArray <int> a = new StructArray <int>(3); a.Array[0] = 1; a.Array[1] = 2; a.Array[2] = 3; for (int i = 0; i < a.Length; i++) { Console.WriteLine(a.Array[i]); } Console.WriteLine("/////////"); // 참조형식으로 제약 RefArray <StructArray <double> > b = new RefArray <StructArray <double> >(3); b.Array[0] = new StructArray <double>(5); b.Array[1] = new StructArray <double>(10); b.Array[2] = new StructArray <double>(200); for (int i = 0; i < b.Length; i++) { Console.WriteLine(b.Array[i].Length); } Console.WriteLine("/////////"); // 기반 클래스로 제약 BaseArray <Base> c = new BaseArray <Base>(3); c.Array[0] = new Base(); c.Array[1] = new Derived(); c.Array[2] = CreateInstance <Base>(); for (int i = 0; i < c.Length; i++) { Console.WriteLine(c.Array[i]); } Console.WriteLine("/////////"); // 기반 클래스로 제약 BaseArray <Derived> d = new BaseArray <Derived>(3); d.Array[0] = new Derived(); //Derived가 기반 클래스가 되기 때문에 Base 할당 불가 d.Array[1] = CreateInstance <Derived>(); d.Array[2] = CreateInstance <Derived>(); for (int i = 0; i < d.Length; i++) { Console.WriteLine(d.Array[i]); } Console.WriteLine("/////////"); // U로부터 상속받은 BaseArray <Derived> e = new BaseArray <Derived>(3); e.CopyArray <Derived>(d.Array); Console.WriteLine(e.Array.Length); //인터페이스 제약 InterfaceArray <IWhatever> f = new InterfaceArray <IWhatever>(3); }