NET基础学习笔记3
一。枚举内容。
二。sturct结构内容。
三。类型转换。
四。值类型和引用类型。
五。ref
一。枚举
【Flags】//标记枚举,加上这个特性后枚举类型.ToString,返回的就是文字形式,不是数字了。
这是特殊枚举,可以组合,赋值的时候用2的次方赋值。
赋值的时候用“|”,验证的时候用“&”
GoodPeople lyh=GoodPeople.白|GoodPeople.富
if((lyh&GoodPeople.白)==GoodPeople.白){}
[Flags]
public enum GoodPeople{
白 =1,
富=2
}
二。struct 结构:
如果需要面向对象的特性,如果存储的数量比较大,使用类。
如果存储的数据量比较小,不需要面向对象的特性,使用结构。
1.结构与类的最大最大区别:
结构是值类型,类是引用类型。
2.结构不能继承,但是可以实现接口
三。类型转换:
当小范围的转换成大范围的,就会发生隐形转换。
把学生转换为人是隐形转换。把人转化为学生则是显示转换(强制转换)
用int.Parse(n) 会抛出异常。
用int.TryParse(n,out result);不会抛异常,如果转换失败的时候会返回0;
四。值类型,引用类型的区别。
值类型均隐形派生自System.ValueType
数值类型,bool,结构,枚举,
引用类型派生自System.Object
字符串,数组,类,接口等。
引用类型的变量的赋值只复制对对象的引用。
值类型变量赋值会拷贝一个副本。
值类型是,创建的时候在栈上开辟一个空间。
引用类型是,在栈上开辟一个空间,在里面放上地址,然后指向堆。创建在堆上创建了一个对象空间。对象上有个地址。
五。ref ,out
值传递:传递的是栈中的内容。
ref引用传递:传递的是栈本身的地址。就是把栈里面的地址,复制一个给那个值。而不是开辟一个新的空间。
对于值类型来说:栈中存储的就是直接使用的数据。
对于引用类型来说:栈中存储的是堆中对象的地址。
参数传递的时候:
1>值传递,传递的是栈中保存的数据。
2>引用传递,传递的是栈本身的地址。
ref 在传入的时候必须先赋值。out在传入的时候,可以不赋值,但是在返回的时候,必须赋值。
ref主要是把一个值,带进去,再带出来。
out主要是把一个值返回。
六。异常:
错误一般分:语法错误,逻辑错误。运行中发生的错误。叫异常。
finally:
1.在finally块中的代码,即便某些异常没有被捕获,程序崩溃了,也要执行。
2.即便在try块中,有return语句,finally块中的代码还是会执行。
七。可变参数 Params
可变参数可以传一个值,也可以传多个参数,也可以不传参数。
如果不为可变参数传值,则可变参数的数组是一个长度为0的数组,但是,不是null。
当一个方法中有多个参数时,并且还包含可变参数。可变参数只能放在方法的最后面。
static int Add(params int[] arrInt){}