zoukankan      html  css  js  c++  java
  • 值类型的Constructor

          使用C#的时候我们最熟悉的是类,也就是Reference Type,翻译成中文是引用类型。但是C#还有另外的一种类型往往被我们用的最多缺经常被忽视,这种类型就是值类型(Value Type)。

          值类型的构造器(Constructor)不同于引用类型的Constructor。在C#中值类型不允许无参数的Constructor,但是在CLR中是没有这个限制的,请看下面的代码:

    struct Point
    {
     public   int x;
     public   int y;
     public   Point() 

          m_x = m_y = 5; 
       }
    }

       编译此代码会提示错误信息:结构不能包含显式的无参数构造函数。这种设定是C#为了避免程序员在使用结构是造成混乱而故意添加上的。

        另外如果在有参数的构造器中不能,把结构的所有字段都初始化也会提示错误信息:下面的代码在编译的时候会弹出错误信息,注意注释部分,如果用new 操作符生成一个Point的示例那么,就不会在弹出错误提示了。           

     internal struct Point
        {
            public int x;
            public int y;
            public Point(int i)
            {
                //this = new Point();
                x = i;
              
            }
        } 

         值类型的Constructor和引用类型的不同之处有一下几点:

         1.不能使用无参数Constructor

         2.有参数Constructor中,必须将值类型所有的字段都初始化,要保证值类型的字段在读取之前是已经初始化好的。

         3.静态的Constructor在值类型中是调用不到的。

  • 相关阅读:
    20171130-构建之法:现代软件工程-阅读笔记
    软件工程课程总结
    团队编程项目作业6-程序维护
    团队-象棋游戏-项目总结
    20171117-构建之法:现代软件工程-阅读笔记
    团队-象棋游戏-团队一阶段互评
    课后作业-阅读任务-阅读笔记-1
    课后作业-阅读任务-阅读提问-1
    课后作业-阅读任务-阅读提问-2
    阿里云部署node坑
  • 原文地址:https://www.cnblogs.com/glorysword/p/3334137.html
Copyright © 2011-2022 走看看