[C#] C#散乱知识
1.什么是错误处理,什么是异常。
https://www.zhihu.com/question/19918532
关于错误处理,这个错误并不是我们平常的Trapped Error和UnTrapped Error。而是我们定制的错误,也就是说,程序能够运行,但是最后得到的结果并不是我们想得到的答案,此时我们需要对代码进行错误定制。(Try,Catch,Finally登场)
2.当一个泛型继承了IEnumerable<T>,我们需要实现两个迭代器的方法,分别是IEnumerator<T> GetEnumerator()和IEnumerator IEnumerable.GetEnumerator(),因为IEnumerator<T>是继承了IEnumerable接口的。
3.要迭代一个类,可以使用方法GetEnumerator,返回类型是IEnumerator。要迭代一个类成员,如一个方法,则可以使用IEnumerable作为返回类型。(这里的所谓迭代都是在foreach中进行遍历)
4.如果想要迭代一个类,继承IEnumerable没错了,需要注意的是如果是泛型的话就继承IEnumerable<T>泛型的话就需要重写两个迭代器块了。
5.对于类的构造函数,最好是不要写,如果写了也最好是五参数的构造函数。如果构造函数有参数,那么就必须在派生类中去通过构造函数参数列表去给基类的构造函数赋值,这样下来就麻烦。
6.对于泛型类型,不能把基类的泛型类赋给派生类的泛型类,除非重载转换运算符。
7.事件是基于委托的,事件也是一种特殊的委托。
8.匿名类型中的数组里,变量名以及类型要相匹配,不然编译器无法识别。
9.声明一个接口变量的作用:实际上这并不是变量,而是这个接口指向了实现这个接口的对象,实际上是一个引用的关系。
10.重写和隐藏基类方法的区别:重写是override,使用时虽然是重写的方法,但是还是可以调用基类的方法,而隐藏new就是直接覆盖了基类的方法了。
11.null:表示不引用任何类型的空引用,是引用类型的默认值。普通值类型不能为null。而在泛型中,可以适用default关键字来初始化(这个关键字就是为了解决这个问题出现的)。
12.