2012年5月20日

23.C#编程指南-嵌套类型

摘要: 在类或结构内部定义的类型称为嵌套类型。 例如:class Container{ class Nested { Nested() { } }}不管外部类型是类还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。 在上面的示例中,Nested 对外部类型是不可访问的,但可以设置为 public,如下所示:class Container{ public class Nested { Nested() { } }}嵌套类型... 阅读全文

posted @ 2012-05-20 11:18 YeChun 阅读(292) 评论(0) 推荐(0) 编辑

22.C#编程指南-对象和集合初始值设定项

摘要: 使用对象初始值设定项可以在创建对象时向对象的任何可访问的字段或属性分配值,而无需显式调用构造函数。View Code private class Cat{ // Auto-implemented properties. public int Age { get; set; } public string Name { get; set; }}Cat cat = new Cat { Age = 10, Name = "Fluffy" };集合初始值设定项使用集合初始值设定项可以在初始化一个实现了 IEnumerable 的集合类时指定一个或多个元素初始值设定项。 元素初始值设 阅读全文

posted @ 2012-05-20 11:09 YeChun 阅读(392) 评论(0) 推荐(0) 编辑

21.C#编程指南-析构函数

摘要: 析构函数用于析构类的实例。不能在结构中定义析构函数。只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。例如,下面是类 Car 的析构函数的声明:View Code class Car{ ~Car() // destructor { // cleanup statements... }}该析构函数隐式地对对象的基类调用 Finalize。 这样,前面的析构函数代码被隐式地转换为以下代码:View Code protected override void Finalize... 阅读全文

posted @ 2012-05-20 09:55 YeChun 阅读(202) 评论(0) 推荐(0) 编辑

2012年5月19日

20.C#编程指南-构造函数

摘要: 使用构造函数任何时候,只要创建类或结构,就会调用它的构造函数。如果您没有为对象提供构造函数,则默认情况下C#将创建一个构造函数,该构造函数实例化对象,并将成员变量设置为默认值表中列出的默认值。静态类和结构也可以有构造函数。如果您为对象提供了构造函数,C#将不会创建默认构造函数(不带参数的构造函数)。类和 structs 都可以定义具有参数的构造函数。 带参数的构造函数必须通过 new 语句或 base 语句来调用。 类和 structs 还可以定义多个构造函数,并且二者均不需要定义默认构造函数。 例如:View Code public class Employee{ public int... 阅读全文

posted @ 2012-05-19 23:20 YeChun 阅读(263) 评论(0) 推荐(0) 编辑

19.C#编程指南-方法

摘要: 在示例中,数组 arr 为引用类型,在未使用 ref 参数的情况下传递给方法。 在此情况下,将向方法传递指向 arr 的引用的一个副本。 输出显示方法有可能更改数组元素的内容,在这种情况下,从 1 改为 888。 但是,在 Change 方法内使用 new 运算符来分配新的内存部分,将使变量 pArray 引用新的数组。 因此,这之后的任何更改都不会影响原始数组 arr(它是在 Main 内创建的)。 实际上,本示例中创建了两个数组,一个在 Main 内,一个在 Change 方法内。View Code class PassingRefByVal { static void Change... 阅读全文

posted @ 2012-05-19 21:36 YeChun 阅读(161) 评论(0) 推荐(0) 编辑

18.C#编程指南-字段

摘要: 常量是在编译时已知并在程序的生存期内不发生更改的不可变值。常量使用const修饰符进行声明。只有C#内置类型(System.Object除外)可以声明为const。用户定义的类型(包括类、结构和数组)不能为const。请使用readonly修饰符创建在运行时初始化一次即不可再更改的类、结构或数组。C#不支持const方法、属性或事件。常量必须在声明时初始化。因为常量值对该类型的所有实例是相同的,所以常量被当作static字段一样访问。不使用static关键字声明常量。 阅读全文

posted @ 2012-05-19 17:57 YeChun 阅读(153) 评论(0) 推荐(0) 编辑

17.C#编程指南-访问修饰符

摘要: public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。private 只有同一类或结构中的代码可以访问该类型或成员。protected 只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。internal 同一程序何中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。protected internal 受保护内部可访问性级别的意思是受保护“或”内部,而不是受保护“和”内部。 换句话说,可以从同一程序集内的任何类(包括派生类)中访问受保护的内部成员。 若要限制为只有同一程序集内的派生类可以访问,请将类本身... 阅读全文

posted @ 2012-05-19 17:29 YeChun 阅读(804) 评论(0) 推荐(0) 编辑

16.C#编程指南-静态类和静态类成员

摘要: 静态类和非静态类基本相同,但存在一个区别:静态类不能实例化。静态类的主要特性:仅包含静态成员。无法实例化。是密封的。不能包含实例构造函数。非静态类可以包含静态的方法、字段、属性或事件。 即使没有创建类的实例,也可以调用该类中的静态成员。 始终通过类名而不是实例名称访问静态成员。 无论对一个类创建多少个实例,它的静态成员都只有一个副本。 静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量(除非在方法参数中显式传递)。更常见的做法是声明具有一些静态成员的非静态类,而不是将整个类声明为静态类。 静态字段有两个常见的用法:一是记录已实例化对象的个数,二是存储必须在所有 阅读全文

posted @ 2012-05-19 16:27 YeChun 阅读(210) 评论(0) 推荐(0) 编辑

15.C#编程指南-抽象类、密封类及类成员

摘要: 使用abstract关键字可以创建必须在派生类中实现的不完整的类和类成员。使用sealed关键字可以防止继承以前标记为virtual的类或某些类成员。抽象类通过在类定义前面放置关键字 abstract,可以将类声明为抽象类。例如:public abstract class A{ // Class members here.}抽象类不能实例化。 抽象类的用途是提供多个派生类可共享的基类的公共定义。 例如,类库可以定义一个作为其多个函数的参数的抽象类,并要求程序员使用该库通过创建派生类来提供自己的类实现。抽象类也可以定义抽象方法。 方法是将关键字 abstract 添加到方法的返回类型的前面... 阅读全文

posted @ 2012-05-19 16:08 YeChun 阅读(223) 评论(0) 推荐(0) 编辑

2012年5月16日

14.C#编程指南-多态性

摘要: View Code public class Shape{ // A few example members public int X { get; private set; } public int Y { get; private set; } public int Height { get; set; } public int Width { get; set; } // Virtual method public virtual void Draw() { Console.WriteLine("Performing base... 阅读全文

posted @ 2012-05-16 23:28 YeChun 阅读(268) 评论(0) 推荐(0) 编辑

导航