none
基础问题,各位来看一下!结构和类的问题! RRS feed

  • 问题


  • 它说在构造器不初始化一个字段是不是就是不用写构造起了,因为默认会有个默认构造函数,然后就像这样

         

    struct Class1
        {
            private int number;
          
            public void Outnb()
            {
                Console.WriteLine(number.ToString());
            }
        }

    它打印的结果还是会有值,他的值为0,但是按照书上不是说不会初始化吗?那是哪里来的0呢?

    按照我的想法就是这样子想的,我已近讲到这里了蛮烦各位高手觉得我是那方面不会,帮我解答一下,一定要详细每个知识点都要讲不然我是看不懂的!!

    2012年6月25日 9:04

答案

  • 在构造函数这一方面,结构和类完全相反——

    结构:不允许显示声明定义无参构造函数(即便你为结构定义了一个初始化该结构内部所有变量的带参构造函数!),因此从这一点我们可以看出——既然结构“不允许”我们声明无参构造函数,显然结构自动会初始化全部内部变量的。

    类:在自定义了一个带参构造函数,如果要使用默认无参构造函数,必须显示定义!

    总结:值类型自动会被初始化(无论在结构或者类中),你的相当于:

    private int number = default(int); //其实不允许这样写,因为结构类型不允许直接对变量初始化,后台VS

    就在做这件事情!


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月26日 5:03
    版主
  • 对的值类型都有一个默认值。Int 的默认值为 0。

    知识改变命运,奋斗成就人生!

    2012年6月25日 10:39
    版主
  • dear

    0是.NET提供的,不能初始化的指的是,不能自行指定"值"


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年6月26日 5:37

全部回复

  • 对的值类型都有一个默认值。Int 的默认值为 0。

    知识改变命运,奋斗成就人生!

    2012年6月25日 10:39
    版主
  • 在构造函数这一方面,结构和类完全相反——

    结构:不允许显示声明定义无参构造函数(即便你为结构定义了一个初始化该结构内部所有变量的带参构造函数!),因此从这一点我们可以看出——既然结构“不允许”我们声明无参构造函数,显然结构自动会初始化全部内部变量的。

    类:在自定义了一个带参构造函数,如果要使用默认无参构造函数,必须显示定义!

    总结:值类型自动会被初始化(无论在结构或者类中),你的相当于:

    private int number = default(int); //其实不允许这样写,因为结构类型不允许直接对变量初始化,后台VS

    就在做这件事情!


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月26日 5:03
    版主
  • dear

    0是.NET提供的,不能初始化的指的是,不能自行指定"值"


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年6月26日 5:37