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继承的方法。

     

  • 相关阅读:
    WPF自定义加载控件
    C# 动态调用Webservice
    C#程序执行Python脚本
    C#监控U盘插拔
    WPF—编程宝典P1
    详解S7源码3-COTP and TPKT
    详解S7源码(1)----Types
    详解S7源码2----Conversition
    P18 FlipPanel控件的讲解
    WPF编程宝典P18----ColorPicker 和FlipPanel的讲解
  • 原文地址:https://www.cnblogs.com/cygnet/p/4162992.html
Copyright © 2011-2022 走看看