枚举(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(){}
}