1.装箱,拆箱---string s="123" int n=Convert.ToInt32(s)---这个不叫拆箱
int x=100; string s=x.Tostring()----这个不叫装箱。装箱与拆箱是发生在父子类中。无论是发生装箱或者是拆箱,对程序的性能影响比较大。所以写代码的时候习题避免装箱与拆箱。---使用泛型集合,增加元素的时候没有发生装箱,所以泛型的性能高。装箱时使用什么类型,拆箱也得使用同样的类型来拆,否则报错。
2.var类型。2.1在C#中,var修饰的值,依然是强类型,在编译时就确定了类型。2.2var只能出现在局部变量中。2.3var不能作为方法的参数类型,也不能作为方法的返回值类型。
3.where T:struct----表示泛型只能是值类型。
where T:class表示泛型只能是引用类型。
where T:I... 表示泛型只能实现某个接口
对于泛型方法调用的时候,可以指定泛型,也可以不指定泛型。
4.foreach:可以被遍历的类型的要求:1,具有GetEnumerator()方法的类型。2,实现IEnumerator接口的类型。3,实现IEnumerator<T>接口的类型。一般我们可以实现IEnumerator()接口。一个类型只要实现了IEnumerable接口,就说这个类型可以被遍历,因为实现该接口后,就会有一个叫做GetEnumerator()的方法,而该方法就是实现遍历的。
|