您的位置:首页 > 编程语言

.net 4.0面向对象编程漫谈(基础篇) 读书笔记 一

2011-01-24 15:25 459 查看
第一章 面向对象编程基础(没啥有用东西) vs2002 7.0vs2003 7.1vs2005 8.0vs2008 9.0vs2010 10.0 Any CPU x86 x64 Itanium In-Process Side-by-Side Execution 在同一个进程内host多个不同版本的CLR,.net 4.0引入 .net framework SDK: C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin ildasm等许多工具都在这个目录下v6.0A好像是针对framework 2.0的 REPL Read-Evaluate-Pring Loop 第二章 数据类型趣谈 .net 4.0中引入了一个BigInteger类型,可以表示任意大的整数;而之前最大是long (Int64) 线程堆栈与托管堆 private void DoSth(){ Object obj; //编译器会自动将这行代码删除。(光声明但不初始化且没被用到会被编译器删除,如果试图使用未初始化的字段,会压根编译不过去) Console.WriteLine("done!");} == 用于比较值类型时是比较内部实际的值,用于引用类型比较时,比较的是引用地址。而string类型重写了==运算符,所以看起来很像值类型。不过我认为==比较的就是内部实际的值,对于值类型来说值就在那,而引用类型的值实际上是一个托管堆地址,string类型具有唯一性(两个一样的字符串在托管堆上是一个地址)操作符重载:public static bool operator ==(string a, string b); Struct类型的特殊之处:1. 继承自ValueType2. 不能被继承3. 不能定义无参构造函数4. 不能有initializer5. 在构造函数中必须对所有字段进行赋值6. 在使用前必须先赋值,例如Point p; Console.WriteLine(p.X);/*不能编译*/ p.X = 3; Console.WriteLine(p.X);/*ok, pass但此时不能访问Y,因为Y尚未被赋值*/ String的特殊之处CLR中有一个表叫做驻留池(暂存池)Intern Poolstring s1 = "aaaa";string s2 = "aaaa";string s3 = new String('a', 4);string s4 = string.Intern(s3); //string的静态方法,如果驻留池中存在直接返回引用地址(object)s1 == (object)s2 //true(object)s1 == (object)s3 //false(object)s1 == (object)s4 //true 字符串类型可以和任意object相加,相当于string.Concat Nullable<T>int i = ni ?? 0;有可空类型参与运算,结果也为可空类型,bool? 除外,有些特殊规则(& |),例如false & null 为false....... dataObject.AnNullableInt = dr["IntColumn"] as int?; //dr为DataRow,可空值类型的用处之一 第三章 字段、方法与属性漫谈 Tuple元组 发音啊可以用Tuple.Create静态方法和new Tuple<T1, T2>来创建Tuple对象.net中定义了1~7个Tuple定义Tuple<T1> Tuple<T1, T2>....Tuple<T1, T2..T7>, Tuple<T1,...T7, TRest>最后这个TRest是另一个Tuple,可以签套。Tuple<int, int> t = new Tuple<int, int>(8, 5);
Console.WriteLine(t.Item1);
Console.WriteLine(t.Item2); Tuple的一个作用是可以作为方法返回值,一次性返回多个结果。 partial方法 (分部方法)0. partial方法不能有返回值1. partial方法前不能加任何访问修饰符(也就是说私有),一个partial是定义,另一个是实现2. partial方法只能在partial类中定义3. 如果只有定义部分,没有实现部分,则编译器会将调用的代码删掉4. 其作用是为提供了一个方法的“功能扩展点”,例如在Linq2Sql自动生成的实体类中就有广泛的应用(比如OnXxxChanging, OnXxxChanged) 泛型扩展方法static class MyExts{ public static void Test<T>(this T obj) //泛型扩展方法可以为任何类型提供扩展 { //.......... }}Published by Wiz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: