image.png

可以用VSTool 等工具 对Application文件进行反编译查看汇编指令。
image.png
image.png
image.png

标识符

取得名字都是标识符,如果和关键字冲突,加一个@能使用关键字同名来命名使用;

封装关键字

  • public:所有对象都可以访问;
  • private:对象本身在对象内部可以访问;
  • protected:只有该类对象及其子类对象可以访问;
  • internal:同一个程序集的对象可以访问,默认值;
  • protected internal:访问限于当前程序集或派生自包含类的类型。

    多态关键字

    image.png
    virtual,override,new
    override重写 virtual的方法
    new关键字只是隐藏,如果你使用父类变量去调用隐藏的父类成员依然可以调用到;
    而override关键字则是完全使用子类的方法替代父类的方法,使用了父类的变量仍然会访问子类的方法。

    类型(转换)关键字

    is 和 as

    is 用来判断一个对象是不是哪个类的实例。
    as 类型转换 A as B A转换成B

    var 和 dynamic

    1、声明的变量
    关键字var是在C#3.0中引入的,声明的变量是静态类型的,变量的类型由编译器在编译时决定。
    关键字dynamic是在C#4.0中引入的,声明的变量是动态类型的,变量的类型由编译器在运行时决定。
    2、初始化
    关键字var声明的变量应在声明时初始化,这样编译器就会根据初始化的值来决定变量的类型。如果变量未初始化,则抛出错误。
    关键字dynamic声明的变量在声明时不需要初始化此类型的变量,因为编译器在编译时不知道变量的类型。如果变量未初始化,也不会抛出错误。
    3、intelliSense的支持
    关键字var支持visual studio中的intelliSense。关键字dynamic不支持visual studio中的intelliSense
    4、应用
    关键字var不能用于属性或从函数返回值。它只能用作函数中的局部变量
    关键字dynamic可以用于属性或从函数返回值。
    C#中的var 和 JavaScript的var 不是一个东西,C#中对应的关键字是dynamic关键字。

    泛型关键字

    T 表类型
    where(泛型类型约束)
    用法:在泛型类型定义中,where子句用于指定对下列类型的约束,这些类型可用作泛型声明中定义的类型参数的实参。
    实例:public class MyClass where T:IComparable{}