2
class Program
{
    static int[] x = {1, 2, 3, 4};
    static int z = 10;
    static int c = 20;
    static int v = 30;
    static int b = 40;

    static void Main(string[] args)
    {
        Console.WriteLine(x[0]);
        Console.ReadLine();

    }



    public Program()
    {
        x = new int[4]{z, c, v, b};

    }

在此代码片段中,我试图通过构造函数更新具有不同变量的数组。但是,当我调试时,它只打印原始的 [0] 索引。

我有一种感觉,我正在做一些非常愚蠢的事情,我只是累了,但是谁能告诉我为什么阵列没有更新?

4

2 回答 2

8

您没有创建 type 的对象Program,因此构造函数永远不会运行。

于 2013-06-30T15:58:08.560 回答
1

您正在创建和操作静态数据,因此您需要静态构造函数。

        static int[] x = { 1, 2, 3, 4 };
        static int z = 10;
        static int c = 20;
        static int v = 30;
        static int b = 40;

        static void Main(string[] args)
        {
            //since its static data you can easily update array here
            //x = new int[] { z, c, v, b };
            Console.WriteLine(x[0]);
            Console.ReadLine();
        }

        static Program()
        {
            x = new int[4] { z, c, v, b };

        }

这将打印出 10。

这将打印非静态数组的 5 和 10,5 以及静态数组的 10,通过创建程序类型的静态变量,它将调用默认构造函数。

    class Program
    {
        private static Program MyInstance = new Program();
        int[] y = { 5, 6, 7, 8 };
        static int[] x = { 1, 2, 3, 4 };
        static int z = 10;
        static int c = 20;
        static int v = 30;
        static int b = 40;

        static void Main(string[] args)
        {
            Console.WriteLine(x[0]);
            Console.ReadLine();
        }

        static Program()
        {
            x = new int[4] { z, c, v, b };

        }

        public Program()
        {
            Console.WriteLine(y[0]);
        }

    }
于 2013-06-30T16:26:37.363 回答