C# 高级编程 对象和类型

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


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


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

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

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


ref  迫使 值 以引用方式传递

使用ref修饰的引用类型参数 , 可以在方法内部 修改 引用类型参数指向的地址。否则不能修改。

这块使用ref 会直接操作 参数指向的地址

如果没有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 构造函数 


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值