C# 高级编程 对象和类型

来源:互联网 发布:源码包安装apache 编辑:程序博客网 时间:2024/05/22 05:11

类  和 结构 都是创建对象的模板, 都可以用 new 类实例化


结构是值类型,存储在栈上, 类是引用类型  存储在堆上 


类可以包含数据成员,函数成员 和 类成员

数据成员: 字段,常量 和 事件 (在发生某些行为时,事件可以让对象通知调用方,客户可以包含事件处理程序来响应事件)

函数成员 提供了 操作类中数据的某些功能  包括方法,属性,构造函数  和 终结器 (finalize)运算符 以及 索引器


ref  迫使 值 以引用方式传递

传递给方法的参数必须初始化


在方法参数 前面加上 out  前缀 就可以不初始化

在调用方法时 也必须加上 ref  或者 out


可选参数, 必须为参数 定义 默认值 并且 必须放在最后


方法重载 : 只需省声明 同名 但 参数个数或类型不同  的方法

两个方法不能仅在 返回类型上有区别

两个方法不能仅根据 参数 声明为 ref 或者 out  来区别 


包含 get 和 set 访问器的 字段 就是属性 

在get 和 set 访问器 中,至少有一个要有访问级别  。 即 不添加 private和  protect


自动实现属性 , 不能在属性的验证中,验证属性的有效性

public int Age{ get; set; }

通过属性  访问字段,而不是 直接访问字段


如果实现某个方法或 属性 仅是调用另一个方法,或返回一个字段 , 则该方法或属性 肯定是内联的


构造函数:

如果提供了 带参数的构造函数 ,编译器 就不会提供默认构造函数

只有在没有提供任何构造函数 , 编译器才会提供默认构造函数


C# 中 可以认为 finalize 就是 析构函数 

在类中,析构函数和 C++ 一样  调用  ~ClassName(){}  

但是 在析构函数中 还是 会调用  基类(object) 中 的 finalize 函数  


到 page 77 构造函数