public static void Usage()
    {
        // test ints (struct type) out of order
        // initialize
        RefArray <int> e = new RefArray <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
        // reference e out of order
        RefArray <int> f = new RefArray <int>(new Ref_T <int>[]
                                              { e.data[8], e.data[6], e.data[4], e.data[2], e.data[0],
                                                e.data[9], e.data[7], e.data[5], e.data[3], e.data[1] });

        Debug.WriteLine("Initial: ");
        Debug.WriteLine("e: [" + e + "]");
        Debug.WriteLine("f: [" + f + "]\r\n");

        e[3] = 1111;
        Debug.WriteLine("e[3] = 1111;");
        Debug.WriteLine("e: [" + e + "]");
        Debug.WriteLine("f: [" + f + "]\r\n");

        f[3] = 2222;
        Debug.WriteLine("f[3] = 2222;");
        Debug.WriteLine("e: [" + e + "]");
        Debug.WriteLine("f: [" + f + "]\r\n");

        f[3] = e[3] + 3333;
        Debug.WriteLine("f[3] = e[3] + 3333;");
        Debug.WriteLine("e: [" + e + "]");
        Debug.WriteLine("f: [" + f + "]\r\n");

        Array.Reverse(f);
        Debug.WriteLine("Array.Reverse(f);");
        Debug.WriteLine("e: [" + e + "]");
        Debug.WriteLine("f: [" + f + "]\r\n");
    }
Example #2
0
    public static void Main(string[] args)
    {
        StructArray <int> a = new StructArray <int>(3);

        a.Array[0] = 0;
        a.Array[1] = 1;
        a.Array[2] = 2;

        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);
    }
Example #3
0
        static void Main()
        {
            const int N  = 3;
            var       a0 = new Point[N];
            var       a1 = new RefArray <Point>(0, N);
            var       a2 = new GetSetArray <Point>(0, N);

            a0[0].X = 1; // OK。配列のインデクサーは実は参照になってる
            a1[0].X = 1; // OK。配列と同列!

            //a2[0].X = 1;

            // ↑これだとエラー。
            // getの戻り値(コピー品)を書き換えようとしてるので、右辺値書き換え(やっちゃダメ)になる
            // ↓こう書かないとダメ。

            var p = a2[0];

            p.X   = 1;     // X だけ(4バイト)書き換えてるように見えて
            a2[0] = p;     // Point 全体(12バイト)の読み書きが発生

            System.Console.WriteLine(a0[0]);
            System.Console.WriteLine(a1[0]);
            System.Console.WriteLine(a2[0]);
        }
Example #4
0
    static void Main(string[] args)
    {
        #region 값 형식, 참조 형식 제약조건
        StructArray <int> a = new StructArray <int>(3);  // T는 값 형식이어야 한다.
        a.Array[0] = 0;
        a.Array[1] = 1;
        a.Array[2] = 2;
        //StructArray<string> s = new StructArray<string>(3);  // error

        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>(15);
        //RefArray<int> i = new RefArray<int>(3);  // error
        #endregion

        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>(2);
        d.Array[0] = new Derived();  // Base 형식은 여기에 할달 할 수 없다.
        d.Array[1] = CreateInstance <Derived>();

        BaseArray <Derived> e = new BaseArray <Derived>(2);
        e.CopyArray <Derived>(d.Array);
    }
Example #5
0
        static void Main(string[] args)
        {
            StructArray <int> a = new StructArray <int>(3);

            a.Array[0] = 1;
            a.Array[1] = 3;
            a.Array[2] = 4;
            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[0].Array[0] = 1;
            b.Array[0].Array[1] = 1;
            b.Array[0].Array[2] = 1;
            b.Array[0].Array[3] = 1;
            b.Array[0].Array[4] = 1;

            b.Array[1] = new StructArray <double>(10);
            b.Array[2] = new StructArray <double>(105);
            for (int i = 0; i < b.Array.Length; i++)
            {
                Console.WriteLine(b.Array[0].Array[i]);
            }

            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);
        }
    public static void Usage()
    {
        // test ints (struct type)
        RefArray <int> c = new RefArray <int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
        RefArray <int> d = new RefArray <int>(c);

        Debug.Print(string.Format("c[3]: {0,-30}, d[3]: {1}", c[3], d[3]));
        c[3] = 1111;
        Debug.Print(string.Format("c[3]: {0,-30}, d[3]: {1}", c[3], d[3]));
        d[3] = 2222;
        Debug.Print(string.Format("c[3]: {0,-30}, d[3]: {1}", c[3], d[3]));
        d[3] = c[3] + 3333;
        Debug.Print(string.Format("c[3]: {0,-30}, d[3]: {1}", c[3], d[3]));

        // test strings (class type)
        RefArray <string> a = new RefArray <string>(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" });
        RefArray <string> b = new RefArray <string>(a);

        Debug.Print(string.Format("a[3]: {0,-30}, b[3]: {1}", a[3], b[3]));
        a[3] = "set a";
        Debug.Print(string.Format("a[3]: {0,-30}, b[3]: {1}", a[3], b[3]));
        b[3] = "set b";
        Debug.Print(string.Format("a[3]: {0,-30}, b[3]: {1}", a[3], b[3]));
        a[3] = b[3] + " + take b set a";
        Debug.Print(string.Format("a[3]: {0,-30}, b[3]: {1}", a[3], b[3]));

        // proof of no point since
        string[] n1 = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
        string[] n2 = n1;
        Debug.Print(string.Format("n1[3]: {0,-30}, n2[3]: {1}", n1[3], n2[3]));
        n1[3] = "set n1";
        Debug.Print(string.Format("n1[3]: {0,-30}, n2[3]: {1}", n1[3], n2[3]));
        n2[3] = "set n2";
        Debug.Print(string.Format("n1[3]: {0,-30}, n2[3]: {1}", n1[3], n2[3]));
        n1[3] = n2[3] + " + take n2 set n1";
        Debug.Print(string.Format("n1[3]: {0,-30}, n2[3]: {1}", n1[3], n2[3]));
    }
 /// <summary>Creates reference RefArray pointing to same RefArray&lt;T> data.</summary>
 public RefArray(RefArray <TElem> references)
 {
     data = references.data;
 }