【Professional C# 读书笔记】(一)-----C#语言基础

说起c#就不能不提.net,可是你知道,二者并没有根本上的联系(有些过,但可以明确的是c#不是.NET的一部分)-----虽然c#是专门为.NET而设计的……然而,当二者配合使用的时候,就会有这样的效果:有一些特性是语言特性,c#语言支持的,有一些特性是平台特性,.NET支持的,所以,想使用c#高效的开发,部署,理解framework是必要的。

第一章是.NET体系结构的总体概述,很多地方还不能理解的透彻,估计没什么大碍,在以后慢慢琢磨,可以预见的是,几乎每向下进行一布,就要回头看看第一章那个的相关内容,予以总过……

因为有过一些cpp,java 的编程经历,看到cs的代码觉得陌生,很多东西是一样的……但是有一些方面值得注意

1,相异值类型和引用类型

二者的存储方式不同,前者是存储在栈中,后者是存储在托管堆中,而且是一个原值的引用。对于预定义的数据类型来讲:除了string,object之外都是值类型,而他们是引用类型。

但是有一点值得注意:作为ref的string:

 

此时的输出结果:s1 = something else  ; s2 = Hello World

因为在修改一个字符串的时候,会创建一个全新的string,这其中的实现机制,我觉得应该是string的封装类的符号重载“=”

哦对了,c#对于数据的初始化非常严格……

object类,最终父类,其强大的作用,知道一点java的都懂的……

 

2,关于注释

平时不太关注的,这里因为有一个XML文档说明,觉得这样的一个解决方式非常的聪明,后面的思想很值得借鉴,codes are just codes,根据我们解析法那个是的不同,便会有不同……

3,编程约定

私用有成员使用camel形式,公有与保护使用Pascal形式

4,类成员

数据成员:字段,常量,事件。这里,事件是我现在还不能理解的,但是大体的意思的“客户可以包含所谓的事件处理程序的代码来响应该事件”-------这是不是和SQL中的trigger有一个作用,如果是那样的就好理解了……待验证。

函数成员:

方法,无需解释

属性,没有VB经验的表示属性是一个多余的东西,我可以把它理解为一个对于访问器与设置器偷工减料的书写方式么?我一开始以为可能这样使用属性的话,可以把其自动列为内联函数,但是我错了,.net的内联机制的自动的(大多数情况下?),好了,既然如此,当我更熟悉CPP/JAVA的时候,我没有理由不放弃她……

还有关于out的使用,这对与有目的性的值类型做输出变量是有意义的,我估计其实现机制是强制的转化ref型……而后面的重载规则中:两方法不能根据参数的ref和out 来区分 ---这也支持我的推断

 

构造函数:因为严格的初始化控制,在没有自定义constructor的时候,会有一个默认的,无参数constructor,把值类型设为0,引用类型设为null,这其中的实现机制我感觉是,最终父类object继承造成的。一个很不错的东西。

关于初始化列表,cs中,确实用类似的使用,但是,只允许对其他构造函数的调用,……(那么,封装类呢?)

静态构造函数,对字段中static进行初始化,但是我们不知道什么时候会初始化,只是告诉你会在这个类使用之前,.net中有很多不确定性,这样的话,如果考试就没得出题了?……

终结器:自动的析构

operator:

索引器:还不懂,&

5,关于readonly字段

 

我觉得如果用一句说的话,应该是:可以在构造函数中给他赋值,之后的行为与const一直……

6,扩展方法:

 

是一个非常非常非常有用的东西,虽然以前没有用过,但是,这个一定非常非常非常有用:

 

书写的时候,注意是静态,但是调用的时候,实例方式调用,扩展方法不会覆盖同名方法。

 

第一篇over

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值