1,类概念
- 类的元素(行为和属性)总称为类成员,成员变量常称为字段(field),以及属性(property);
- 不同于C++,类定义最后无需添加冒号(:)
- 不同于C++,类的方法主体是在类定义中定义的,C#中没有头文件概念,不要求方法在定义之前进行声明,同时也不支持将方法声明放在头文件中,而代码放在另一个文件中。
- 访问修饰符包括public(所有类可访问)、protected(类及派生类可访问)、private(本类可访问)、internal(本程序集可访问)、protected internal(类及派生类、程序集可访问)。默认为private,但是所有类成员最好都显式地使用修饰符。
- 对象实例化用new()。
2,形参与实参
3,this用法
- 限定被参数隐藏的实例成员,如this.member;
- 把当前对象作为参数传给另一个方法;
- 从一个重载构造方法中调用另一个;
4,静态成员引用方法
- 引用符号是(.),区别于C++的(::)。如Button类调用静态方法SomeMethod():Button.SomeMethod();
- C#中没有全局方法,只有类方法。可以在类中定义静态方法达到类似的效果。
- 静态方法不能直接访问非静态成员,如果要调用非静态方法,它必须实例化一个对象。
5,静态构造方法
- 静态构造方法以static修饰,不能有public等修饰符,如
- 静态构造方法只能访问静态成员变量,在类的第一个实例创建前启动运行;
- 静态构造方法对于无法使用初始化语句完成的以及仅需要进行一次的设置工作是很有用的。
6,静态类
静态类是密封的,不会创建实例,不能派生;
只包含静态成员,没有构造函数;
7,静态字段(field,成员变量)
静态字段常用来表示实例对象的数量,在构造函数中自增实现实例计数。
8,销毁对象
- C#有垃圾回收机制,不需要显式地销毁对象;
- 如果没有非托管资源,无需也不应该实现析构函数,因为析构函数有一定的开销;
- 对于非托管资源的隐式控制是由析构函数提供的,它在对象销毁时由垃圾回收期调用;
- 显式调用析构方法是不合法的,不能直接调用对象的析构方法。
- 非托管资源的释放需要实现IDisposable接口,重载Dispose(bool is_dispose)方法。参考http://blog.youkuaiyun.com/zlwzlwzlw/article/details/7918633
- 为了使类的客户代码正确地清除对象,C#提供了using语句保证Dispose()会在尽可能最早的时刻调用。有一个惯用法,声明正在使用的对象,并在大括号创建对象的作用域。当执行到达结束大括号时,Dispose()方法将自动对对象调用。
9,值类型引用传递
值类型变量默认是值传递,如果要进行引用传递,需要在函数定义的参数类型前加上ref,同时在函数调用时也要加上ref。out表示参数是用于返回的引用传递,用法与ref相同。
10,重载方法
函数签名由其名字和参数列表定义,参数列表不同可以是参数数目或参数类型不同。当重载方法时,必须改变其签名。如果是仅改变返回值类型,不是重载方法,会报错。
11,属性
- 属性为客户提供了简单的接口,好像是一个成员变量,同时它又是用方法实现的,从而提供了优秀的面向对象设计所必需的数据隐藏性。
- get方法
- Set方法