说起c#就不能不提.net,可是你知道,二者并没有根本上的联系(有些过,但可以明确的是c#不是.NET的一部分)-----虽然c#是专门为.NET而设计的……然而,当二者配合使用的时候,就会有这样的效果:有一些特性是语言特性,c#语言支持的,有一些特性是平台特性,.NET支持的,所以,想使用c#高效的开发,部署,理解framework是必要的。
第一章是.NET体系结构的总体概述,很多地方还不能理解的透彻,估计没什么大碍,在以后慢慢琢磨,可以预见的是,几乎每向下进行一布,就要回头看看第一章那个的相关内容,予以总过……
因为有过一些cpp,java 的编程经历,看到cs的代码觉得陌生,很多东西是一样的……但是有一些方面值得注意
1,相异值类型和引用类型
二者的存储方式不同,前者是存储在栈中,后者是存储在托管堆中,而且是一个原值的引用。对于预定义的数据类型来讲:除了string,object之外都是值类型,而他们是引用类型。
但是有一点值得注意:作为ref的string:
view plaincopy to clipboardprint?string s1 = "Hello World"; string s2= s1 ; s1 = "Something else"; string s1 = "Hello World";
string s2= s1 ;
s1 = "Something else";
此时的输出结果: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,扩展方法:
是一个非常非常非常有用的东西,虽然以前没有用过,但是,这个一定非常非常非常有用:
view plaincopy to clipboardprint?
public static class Extension
{
public static void AddMethod(this Money monney, int number)
{
money.number += number;
}
}
public static class Extension
{
public static void AddMethod(this Money monney, int number)
{
money.number += number;
}
}
书写的时候,注意是静态,但是调用的时候,实例方式调用,扩展方法不会覆盖同名方法。
第一篇over
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chrisplus_jiang/archive/2010/07/14/5734181.aspx