C#笔记整理

里氏转换:

1.子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替;

2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象;

foreach循环:

foreach(var item in Txt)

{

          Console.Write(item);

}

item:代表集合里的每一项;in后面的:要遍历的目标集合;

装箱:值类型转换为引用类型;

拆箱:引用类型转换为值类型;

前提:两者要有继承关系;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

委托:是一种数据类型,像类一样(可以声明委托类型变量)

           定义委托类型,注意定义委托时是否有返回值和参数,关键是看委托里面存放的那个方法有没有返回值和参数,要保持一致。

系统自带泛型委托:

1.Action        无参数无返回值

  扩展方法:Action<int>   参数是int类型,无返回值,只要是Action都是无返回值的

2.Func<int>       表示没有参数       返回值是int;

   Func<int,string>      表示的是参数是int,返回值是string。

   只要是Func<>里面有多个类型,最后一个永远是返回值。

委托和事件的区别:

委托:可以用等号(=)来赋值,可以在外部进行调用,是一种数据类型。

事件:不可以用等号(=)来赋值,不可以在外部进行调用,不是数据类型,它修饰的是一个对象。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 ToString("X2") 为C#中的字符串格式控制符
 
X为     十六进制 
 
2为     每次都是两位数

比如   0x0A ,若没有2,就只会输出0xA 

假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在使用静态构造函数的时候应该注意几点:

  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
  
  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

  3、一个类只能有一个静态构造函数。

  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

  5、最多只运行一次。

  6、静态构造函数不可以被继承。

  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

 

posted @ 2017-10-30 17:00  雪wolf  阅读(159)  评论(0编辑  收藏  举报