枚举是属于自己定义的一种数据类型,定义完成之后,就像int string 一样,是一个数据类型,一般定义在命名空间下,枚举又分为普通枚举和标志枚举
例如namespace 空字符串
{
public enum Gender
{
male,
female,
}
class Program
{
static void Main(string[] args)
{
Gender ger = Gender.male;
}
}
}
这里就定义了一个普通枚举,枚举在使用时非常方便,通常通过空格就可以非常快捷的使用了
[Flags]
public enum GoodPeople
{
高=1,
富=2,
帅=4,
白=8,
美=16
}
这里定义了一个标志枚举,注意后面的数字是2的倍数一次递增
普通枚举的每个值是互斥的,但标志枚举可以相容
结构有时容易和类混淆,这两个概念也是比较相近的
类是一种“引用类型”。
创建类的对象时,对象赋值到的变量只保存对该内存的引用。
将对象引用赋给新变量时,新变量引用的是原始对象。
通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。
结构是一种值类型。
创建结构时,结构赋值到的变量保存该结构的实际数据。
将结构赋给新变量时,将复制该结构。
因此,新变量和原始变量包含同一数据的两个不同的副本。
对一个副本的更改不影响另一个副本。
关键就在于值类型与引用类型的区别
类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。
结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。
比如我在定义一个坐标时,使用结构就会方便很多(呵呵,这个问题我也是才搞懂的)
构造函数在创建一个类时,会默认有一个无参数的构造函数,当然也可以手动添加构造函数,但是手动添加构造函数之后,原来无参数的默认构造函数就会被覆盖,构造函数也是可以实现重载的,构造函数时定义时必须和类名一致,没有返回值(void也不行),构造函数不能被子类继承,但是子类在执行自己的构造函数时会先执行以下父类的构造函数,子类的构造函数可以通过:base()来显式的调用父类的某个构造函数 |