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){}

原文地址:https://www.cnblogs.com/huijie/p/3188217.html