文章分类 - C# 高级编程
摘要:C#点滴 – CLR, CTS…等等基本概念1. CLR – Common Language Runtime为.NET应用程序提供运行环境。定位、加载和管理.NET类型,同时也负责一些底层细节的工作,如内存管理、创建应用程序域、线程和对象上下文边界,安全检查等等。2. CTS – Common Type System完整描述了运行库所支持的所有可能的数据类型和编程结构,指定了这些实体之间如何交互,也规定了它们在.NET元数据格式中的表示。CTS包括5种基本类型:class, interface, enum, delegate and structCTS可能的成员:构造器,终结器,静态构造函数,
阅读全文
摘要:IEnumerable和IEnumerator有什么区别? 问题的提出:见(C#高级编程P127)public interface IEnumerable{ IEnumerator GetEnumerator();}public interface IEnumerator{ bool MoveNext(); void Reset(); Object Current { get; }}IEnumerable和IEnumerator有什么区别?这是一个很让人困惑的问题(在很多forum里都看到有人在问这个问题)。研究了半天,得到以下几点认识:1、一个Collection要支持foreach方式的.
阅读全文
摘要:C#的foreach 语句不会解析为IL 代码中的foreach 语句。C#编译器会把foreach 语句转换为IEnumerable 接口的方法和属性。下面是一个简单的foreach 语句,它迭代persons 数组中的所有元素,并逐个显示它们:foreach (Person p in persons){Console.WriteLine(p);}foreach 语句会解析为下面的代码段。首先,调用GetEnumerator()方法,获得数组的一个枚举。在while 循环中-- 只要MoveNext()返回true-- 用Current 属性访问数组中的元素:IEnumerator enum
阅读全文
摘要:有许多方法扩展类。如果有类的源代码,继承就是给对象添加功能的好方法。但如果没有源代码,该怎么办?此时可以使用扩展方法,它允许改变一个类,但不需要类的源代码。扩展方法是静态方法,是类的一部分,但实际上没有放在类的源代码中。假定上例中的Money类需要一个方法AddToAmount(decimal amountToAdd)。但是,由于某种原因,程序集最初的源代码不能直接修改。此时就可以创建一个静态类,把方法AddToAmount 添加为一个静态方法。代码如下:namespace Chapter3.Extensions{public static class MoneyExtension{publi
阅读全文