C#高级编程(第7版)读书笔记(一)
2012-03-07 15:03
246 查看
C#的两个局限性。一方面是该语言不适用于编写时间急迫或性能非常高的代码,例如一个要占用 1000或 1050个机器周期的循环,并在不需要这些资源时,立即清理它们。在这方面,C++可能仍是所有低级语言中的佼佼者。另一方面是C#缺乏性能极高的应用程序所需要的关键功能,包括能够指定那些保证在代码的特定地方运行的内联函数和析构函数。但这类应用程序非常少。
第一部分c#语言
第1章.net体系结构
(1)C#的 结构和方法论反映了.NET基础方法论。
(2)在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。
1.1c#与.net的关系
C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。
1.2公共语言运行库
1.3中间语言
1.4程序集
1.5net framework类
1.6名称空间
1.7用c#创建.net应用程序
1.8c#在.net企业体系结构中的作用
1.9小结
第2章核心c#
第3章对象和类型
扩展方法
namespace Wrox
{
public static cl ass MoneyExtension
{
public static void AddToAmount(this Money money, decimal amountToAdd)
{
money.Amount += amountToAdd;
}
}
}
调用:Money实例.MethodName(amountToAdd)
第4章继承
构造函数继承层次,默认调用基类无参构造函数。如果基类无参构造函数声明为private或没有无参构造函数,会出现编译错误
类不能声明为private,protected,internal protected
第5章泛型
default
where T:struct/class/IInterfaceName/ClassName/new()/T1:T2
泛型接口,协变和抗变:必须用out或in标注
第6章数组
Net4 Tuple合并不同类型的多个对象。
排序:Sort()的第二个参数为实现IComparer<T>接口的类实例。或没有第二个参数
ArraySegment<T>
yield语句:yeild return, yeile break
元组Tuple:合并不同类型,8个泛型类1个静态类。静态类的create创建
IstructVralEquatabl e.Equals
第7章运算符和类型强制转换
第8章委托、lambda表达式和事件
Action<T>,Func<T>委托
Action<T>返回void类型,可提供至多16种不同的参数类型。Action<in T>
Func<T>可调用带返回类型的方法。Func<in T,out TResult>
多播委托:GetInvocationList()返回添加的多个委托方法。
匿名方法:delegate(params){}
Lambda表达式:3.0后用它替代匿名方法。(params)=>{}
事件:相当于委托变量,定义了某种约定委托类型的事件变量。
简化记法和长记法。
弱事件模型:IWeekEventListener,WeekEventManager基类
第9章字符串和正则表达式
正则表达式:
\b单词开头或结尾
.除换行以外任意字符
*任意次数
+一次或更多
?0或1次
{n}前面项重复次数
{n,}重复n次或更多
{n,m}重复n到m次
[]任意一个里面的字符可以用-表示范围
\d任意的一个数字
\s任意一个空白符
\w字母或数字或下划线或汉字
^字符串开始
$字符串结束
第10章集合
IList<T>,Queue,Stack,LinkedList,SortedList,Dictionary,Lookup,SortedDictionary,HashSet<T>,SortedSet<T>,ObservableCollction<T>,BitArray,BitVector32,BitVector32.Section,Concurrent,
Lookup<TKey,TValue>必须通过集合的ToLookup(Func<TSource,TKey>)创建。
第11章LINQ语言集查询Language Integrated Query
用相同的语法访问不同的数据源
from 开头
中间可以用where,orderby,join,let,其他from
select或group结束
扩展方法:扩展现有类static ClassExtension,static Method(this class pname)
ToArray(),ToEnumerable,ToList
并行LINQ:AsParallel()
并行取消:WithCancellation(CancellationTokenSource.Token)
表达式树:Expression<T>类型参数会为Lambda表达式创建表达式树。
LINQ提供程序:
第12章动态语言扩展
12.1DLR
允许添加动态语言Ruby和Python
12.2dynamic类型
编译时不检查类型,可改变类型。
动态对象不支持扩展方法,匿名函数也不能作为动态方法调用的参数。
12.3包含DLR ScriptRuntime
ScriptRuntime,ScriptEngine,ScriptSource,ScriptScope
配置config文件,添加microsoft.scripting节
12.4DynamicObject和ExpandoObject
派生自DynamicObject需重写TrySetMember,TryGetMember,TryInvokeMember方法
ExpandoObject是密封类
第13章内存管理和指针
类成员指针使用fixed
基于栈的指针stackalloc:type* pnames=stackalloc type[size]
pNames[i]和*(pNames+i)相同
第14章反射
AttributeUsage:AttributeTargets,AllowMultiple,Inherited
System.Type,System.Reflection.Assembly
Typeof或实例或静态的GetType
Assembly.Load,LoadFrom
Attribute.GetCustomAttributes(assembly)
第15章错误和异常
第一部分c#语言
第1章.net体系结构
(1)C#的 结构和方法论反映了.NET基础方法论。
(2)在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。
1.1c#与.net的关系
C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。
1.2公共语言运行库
1.3中间语言
1.4程序集
1.5net framework类
1.6名称空间
1.7用c#创建.net应用程序
1.8c#在.net企业体系结构中的作用
1.9小结
第2章核心c#
第3章对象和类型
扩展方法
namespace Wrox
{
public static cl ass MoneyExtension
{
public static void AddToAmount(this Money money, decimal amountToAdd)
{
money.Amount += amountToAdd;
}
}
}
调用:Money实例.MethodName(amountToAdd)
第4章继承
构造函数继承层次,默认调用基类无参构造函数。如果基类无参构造函数声明为private或没有无参构造函数,会出现编译错误
类不能声明为private,protected,internal protected
第5章泛型
default
where T:struct/class/IInterfaceName/ClassName/new()/T1:T2
泛型接口,协变和抗变:必须用out或in标注
第6章数组
Net4 Tuple合并不同类型的多个对象。
排序:Sort()的第二个参数为实现IComparer<T>接口的类实例。或没有第二个参数
ArraySegment<T>
yield语句:yeild return, yeile break
元组Tuple:合并不同类型,8个泛型类1个静态类。静态类的create创建
IstructVralEquatabl e.Equals
第7章运算符和类型强制转换
第8章委托、lambda表达式和事件
Action<T>,Func<T>委托
Action<T>返回void类型,可提供至多16种不同的参数类型。Action<in T>
Func<T>可调用带返回类型的方法。Func<in T,out TResult>
多播委托:GetInvocationList()返回添加的多个委托方法。
匿名方法:delegate(params){}
Lambda表达式:3.0后用它替代匿名方法。(params)=>{}
事件:相当于委托变量,定义了某种约定委托类型的事件变量。
简化记法和长记法。
弱事件模型:IWeekEventListener,WeekEventManager基类
第9章字符串和正则表达式
正则表达式:
\b单词开头或结尾
.除换行以外任意字符
*任意次数
+一次或更多
?0或1次
{n}前面项重复次数
{n,}重复n次或更多
{n,m}重复n到m次
[]任意一个里面的字符可以用-表示范围
\d任意的一个数字
\s任意一个空白符
\w字母或数字或下划线或汉字
^字符串开始
$字符串结束
第10章集合
IList<T>,Queue,Stack,LinkedList,SortedList,Dictionary,Lookup,SortedDictionary,HashSet<T>,SortedSet<T>,ObservableCollction<T>,BitArray,BitVector32,BitVector32.Section,Concurrent,
Lookup<TKey,TValue>必须通过集合的ToLookup(Func<TSource,TKey>)创建。
第11章LINQ语言集查询Language Integrated Query
用相同的语法访问不同的数据源
from 开头
中间可以用where,orderby,join,let,其他from
select或group结束
扩展方法:扩展现有类static ClassExtension,static Method(this class pname)
ToArray(),ToEnumerable,ToList
并行LINQ:AsParallel()
并行取消:WithCancellation(CancellationTokenSource.Token)
表达式树:Expression<T>类型参数会为Lambda表达式创建表达式树。
LINQ提供程序:
第12章动态语言扩展
12.1DLR
允许添加动态语言Ruby和Python
12.2dynamic类型
编译时不检查类型,可改变类型。
动态对象不支持扩展方法,匿名函数也不能作为动态方法调用的参数。
12.3包含DLR ScriptRuntime
ScriptRuntime,ScriptEngine,ScriptSource,ScriptScope
配置config文件,添加microsoft.scripting节
12.4DynamicObject和ExpandoObject
派生自DynamicObject需重写TrySetMember,TryGetMember,TryInvokeMember方法
ExpandoObject是密封类
第13章内存管理和指针
类成员指针使用fixed
基于栈的指针stackalloc:type* pnames=stackalloc type[size]
pNames[i]和*(pNames+i)相同
第14章反射
AttributeUsage:AttributeTargets,AllowMultiple,Inherited
System.Type,System.Reflection.Assembly
Typeof或实例或静态的GetType
Assembly.Load,LoadFrom
Attribute.GetCustomAttributes(assembly)
第15章错误和异常
相关文章推荐
- C#高级编程(第7版)读书笔记
- C#高级编程(第7版)读书笔记(二)
- C#高级编程(第7版)读书笔记(三)
- C#高级编程(第7版)读书笔记(四)
- C#高级编程(第7版) Professional C# 4 and .NET 4 - 读书笔记
- 《C#高级编程》读书笔记(十五):任务、线程和同步之四 同步
- 【读书笔记】软件工程·实践者的研究方法第7版 第一部分 软件过程(第3章 敏捷开发)
- C#高级编程(第七版)读书笔记(3)
- 【精通iOS开发(第7版)】读书笔记01(P1~90)
- c#高级编程第六版读书笔记
- 《C#高级编程》读书笔记(十八):网络
- C#高级编程(第七版)读书笔记(4)——对象和类型
- 《C#高级编程》 读书笔记 -索引
- C#高级编程 chapter 4 继承 读书笔记
- 《C#高级编程》中文第七版 读书笔记(目录阐述)
- 《C#高级编程》读书笔记(三):关于泛型
- 【读书笔记】软件工程·实践者的研究方法第7版 第一部分 软件过程(引论 软件和软件工程)
- 【读书笔记】软件工程·实践者的研究方法第7版 第二部分 建模 第4章 指导实践的原则
- 新手帮助:C#高级编程(第7版)中弱事件模式的例子的理解
- 《C#高级编程》读书笔记(十一):错误和异常