zoukankan      html  css  js  c++  java
  • 2.结构篇

    1.含义:结构(struct)是使用 struct关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构。

    2.申明

     public struct Student

    {

       public string name; //定义结构时的数据字段是不能赋初始值的
           public int age;
           public Student(string name,int age) // 结构的构造函数
           {
          stu.name = name;
          stu.age = age;
       }
           public void SayHi()
           {

                Console.WriteLine("Hello World !"); 

           }

    }

    3.结构的构造函数

    我们知道结构不能使用默认的构造函数,只能使用带参数的构造函数,当定义带参数的构造函数时,一定要完成结构所有字段的初始化,如果没有完成所有字段的初始化,编译时会发生错误­。

    4.为什么结构不能自定义没有无参的构造函数?

    结构类型的构造函数与类的构造函数类似,用来初始化结构的成员变量,但是struct不能包含显式默认构造函数,
    因为编译器将自动提供一个构造函数,此构造函数将结构中的每个字段初始化为默认值表中显示的默认值。
    然而,只有当结构用new实例化时,才会调用此默认构造函数。对值类型调用默认构造函数不是必需的

    5.结构可以使用静态构造函数吗?

    可以,结构的静态构造函数与类的静态构造函数所遵循的规则大体相同。

    6.结构的静态构造函数何时将触发呢?

    结构的实例成员被引用,结构的静态成员被引用,结构显示声明的构造函数被调用。但是创建结构类型的默认值不会触发静态构造函数。

    7.为什么结构不能自定义无参数的构造函数? 

    结构类型的构造函数与类的构造函数类似,用来初始化结构的成员变量,但是struct不能包含显式默认构造函数,
    8.特征(引用MSDN)

    • 与类不同,结构的实例化可以不使用 new 运算符。

    • 结构可以声明构造函数,但它们必须带参数。

    • 一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object

    • 结构可以实现接口。

    • 结构是值类型,而类是引用类型。

    9.结构与继承:
    一个结构声明可以指定实现的接口列表,但是不能指定基类。
    由于结构不支持类与结构的继承,所以结构成员的声明可访问性不能是protected或protectedinternal。结构中的函数成员不能是abstract或 virtual,因而override修饰符只适用于重写从System.ValueType继承的方法。

     

  • 相关阅读:
    NX二次开发-UFUN UF_UI_add_to_class_sel将UDOTestClass类的显示名称加入到类选择对话框的类列表中
    NX二次开发-UFUN创建管道UF_MODL_create_tube
    NX二次开发-UFUN获得工作视图的tag UF_VIEW_ask_work_view
    SQLyog/Mysql怎么修改用户/root密码【转载】
    MySQL返回来的值都是字符串类型,还原每个字段【转载】
    NX二次开发-NX访问MySQL数据库(增删改查)
    NX二次开发-ug表达式函数ug_find_file读取当前prt所在路径【转发】
    QT界面开发-QProgressBar【转载】
    QT界面开发-使用new QComboBox添加触发事件
    QT界面开发-窗口滚动条【转发】
  • 原文地址:https://www.cnblogs.com/cygnet/p/4162992.html
Copyright © 2011-2022 走看看