在C#中创建一个类对象时,系统最先执行的是()

A. main方法
B. 构造函数
C. 初始化函数
D. 字符串函数

首先个人觉得这个题目有点问题,至少题目没有说清楚(因为类不一定有初始化器,除非它有静态字段并且有字段赋值表达式。还有一个问题就是:是不是第一次调用构造函数)。我用程序验证了下(以下都是有初始化器的情况,没初始化器的情况当然选B了):

namespace ConsoleApplication1

{

    class Test

    {

        public Test(string mes)

        {

            Console.WriteLine(mes);

        }

    }

    class ConditionA

    {

        static Test t = new Test("隐式的初始化函数被调用!");//.net会在IL中生成初始化函数,你可以用ILDASM查看

        public ConditionA()

        {

            Console.WriteLine("带隐式初始化函数类的构造函数被调用!");

        }

        public static void Function()

        {

             Console.WriteLine("。。。。。。!");

        }

    }

    class ConditionB

    {

        static Test t;

        static ConditionB()

        {

            t=new Test("自定义的初始化函数被调用!"); 

        }

        public ConditionB()

        {

            Console.WriteLine("带显示初始化函数类的构造函数被调用!");

        }

    }

    class Program

    { 

        private static void Main(string[] args)

        {

            Console.WriteLine("第一次构造对象:");

            Console.WriteLine("拥有隐式初始化函数的类:");

            ConditionA ca = new ConditionA();

            Console.WriteLine("------------------------------------------");

            Console.WriteLine("拥有显示初始化函数的类:");

            ConditionB cb = new ConditionB();

            Console.WriteLine("==========================================");

            Console.WriteLine("再次构造对象:");

            Console.WriteLine("拥有隐式初始化函数的类:");

            ConditionA ca1 = new ConditionA();

            Console.WriteLine("------------------------------------------");

            Console.WriteLine("拥有显示初始化函数的类:");

            ConditionB cb1 = new ConditionB();

            Console.Read();

        }    

    }

ps:不过结果貌似和.NET本质论上讲的相悖,因为不管是隐式的还是显示的初始化器都在第一次访问类型是都要先调用!

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-11
选B
A、程序最先执行的是Main方法,这个时候还没有创建对象。
B、正解,构造类的一个对象最先执行的就是构造函数,没有例外。
C、不是所有的类都有,有的话一般是在构造函数中调用。
D、无厘头的选项。本回答被网友采纳
第2个回答  2009-08-15
我不清楚你这边的 初始化函数 是指.Net自身的用来初始化成员的函数还是 自己定义的初始化函数。
如果是前者,那么最先执行的是初始化函数。
如果是后者,那么最先执行的是构造函数。
第3个回答  2009-08-15
构造函数
第4个回答  2009-08-15
main方法 不执行它,别的都没法执行,入口嘛
然后是构造函数
相似回答