C#中枚举,结构,可空类型,合并运算符,构造函数和析构函数

枚举(Enum)
枚举一组命名整型常量。枚举类型是使用 enum 关键字声明的。
C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

声明 enum 变量

声明枚举的一般语法:

enum <enum_name>
{ 
    enumeration list 
};

其中

enum_name 指定枚举的类型名称。
enumeration list 是一个用逗号分隔的标识符列表。

枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:

enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
using System;

public class EnumTest
{
    enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

    static void Main()
    {
        int x = (int)Day.Sun;
        int y = (int)Day.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}

来源: https://www.runoob.com/csharp/csharp-enum.html


结构(Struct)
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。
类与结构不同点:
(1)类是引用类型,结构是值类型;
(2)结构不能继承,不能声明默认的构造函数;

struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  
using System;
using System.Text;
     
struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  

public class testStructure
{
   public static void Main(string[] args)
   {

      Books Book1;        /* 声明 Book1,类型为 Book */
      Books Book2;        /* 声明 Book2,类型为 Book */

      /* book 1 详述 */
      Book1.title = "C Programming";
      Book1.author = "Nuha Ali";
      Book1.subject = "C Programming Tutorial";
      Book1.book_id = 6495407;

      /* book 2 详述 */
      Book2.title = "Telecom Billing";
      Book2.author = "Zara Ali";
      Book2.subject =  "Telecom Billing Tutorial";
      Book2.book_id = 6495700;

      /* 打印 Book1 信息 */
      Console.WriteLine( "Book 1 title : {0}", Book1.title);
      Console.WriteLine("Book 1 author : {0}", Book1.author);
      Console.WriteLine("Book 1 subject : {0}", Book1.subject);
      Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);

      /* 打印 Book2 信息 */
      Console.WriteLine("Book 2 title : {0}", Book2.title);
      Console.WriteLine("Book 2 author : {0}", Book2.author);
      Console.WriteLine("Book 2 subject : {0}", Book2.subject);
      Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);      

      Console.ReadKey();

   }
}

来源: https://www.runoob.com/csharp/csharp-struct.html


可空类型(Nullable)
nullable类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个null值
例如,Nullable,读作"可空的Int32",可以被赋值为 -2,147,483,648到2,147,483,647之间的任意值, 也可以被赋值为null值。类似的,Nullable变量可以被赋值为true或false或null。
在处理数据库和其他包含可能未赋值的元素的数据类型时,将null赋值给数值类型或布尔型的功能特别有用。例如,数据库 中的布尔型字段可以存储值true或false,或者,该字段也可以未定义。
声明一个 nullable 类型(可空类型)的语法如下

int i = 0;
//Nullable<int> j = null; int? j = null;
Console.WriteLine("i的值是"+i); // 0
Console.WriteLine("j的值是"+j); // 
 Console.ReadLine(); 

Null 合并运算符( ?? )
Null合并运算符用于定义可空类型和引用类型的默认值。
Null合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。Null合并运算符把操作数类型隐式转换为另一 个可空(或不可空)的值类型的操作数的类型。

int? i = null; int? j = 123; int k = i ?? 100;
Console.WriteLine(k);   // 100
 Console.WriteLine(i); k = j ?? 101;
Console.WriteLine(k);  // 123
Console.WriteLine(j); // 123
Console.ReadLine();

构造函数
类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。当实例化一个类对象的时候自动调用这个函数
声明:

class Student
{
	 public Student()
	 {
	 }
}

析构函数
类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。当这个类对象被释放的时候会被自动调用这个函数
声明:

class Student
{
	~Student(){}
}
发布了117 篇原创文章 · 获赞 111 · 访问量 9643

猜你喜欢

转载自blog.csdn.net/dust__/article/details/103865240