c#基础加强

反编译工具 .net Reflector 7.0

Dotnetfx.exe 包含.net基类库,在客户机器上简便安装.net环境

1:多个构造函数了,可以通过this继承省略一些代码

c#基础加强_第1张图片

2C#5种访问修饰符

private ; 当前类内部访问

protected ; 当前类内部以及当前类的子类内部访问。

internal ; 当前程序集内部访问

//程序集2引用了程序集1,不能访问程序集1标记为internal的对象。构造一个新类继承于程序集1的类,可以访问该类标记为protected 的对象。故两者范围没有可比性。

protected internal ; 同时具有protectedinternal的权限特征。

public ;

3:可访问性不一致

父类的访问级别要比子类高。比如父类为internal默认访问权限为internal,用户自己写的类的访问修饰符不能为private(微软自带类可以~~)!),子类为public,则会编译出错。

PS:若一个类为internal,其某一方法访问为public,编译不出错,但该方法访问权限其实是internal

4:继承类构造时,默认要去调用父类的无参数构造函数。如果要去调用父类的有参数构造函数,需要使用base()

c#基础加强_第2张图片

5:虚方法实现多态

父类某方法标记为virtual虚方法时,在子类就可以被重写。

子类重写时,要将方法标记为 override 

例如有一个父类 Person ,它有一个虚方法show(),它有多个子类 Chinese, English等,它们有一个重写方法show。使用时,创建了不同的子类对象,这时要一一显示对象的的show()方法,就可以new一个Person数组,将所有对象加进去。然后调用父类的虚方法时就可以调用到相应的子类方法了。

(子类赋值给父类不需要强制,反之即需要。实现多态:能用父类就不用子类,即Person p = new Chinese()

6:转义符无效

sting s = @”c:/dd/dd”;

7:格式化数字

sting s = f.toString("f1"); //f1为保留一位小数

string str1 = i.ToString("n1"); //111,125.0

你可能感兴趣的:(C#)