2013年3月13日

C#:装箱和拆箱

摘要: 装箱和拆箱:任何值类型、引用类型可以和Object类型之间进行转换。装箱转换是指将一个值类型隐式或显示地转换为一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的装箱就是创建一个object实例并将这个值复制给这个object,装箱后的object对象中的数据位于堆中,堆中的地址在栈中。有两种方式来查看包装以后的引用对象中包装的原始数据的类型:要判断原始类型是否是某个给定的原子类型,用is如果要返回一个字符串,可以用object类的GetType方法 1 using System; 2 3 namespace Console. 阅读全文

posted @ 2013-03-13 16:27 LilianChen 阅读(697) 评论(0) 推荐(0) 编辑

2013年3月8日

C#:foreach语句,yield语句

摘要: 1. foreach语句C#编译器会把foreach语句转换为IEnumerable接口的方法和属性。1 foreach (Person p in persons)2 {3 Console.WriteLine(p);4 }foreach语句会解析为下面的代码段。调用GetEnumerator()方法,获得数组的一个枚举在while循环中,只要MoveNext()返回true,就一直循环下去用Current属性访问数组中的元素1 IEnumerator enumerator = persons. GetEnumerator();2 while (enumerator.MoveNext())3 { 阅读全文

posted @ 2013-03-08 13:15 LilianChen 阅读(6577) 评论(4) 推荐(4) 编辑

2013年3月6日

C#:Array类的排序

摘要: Array类实现了对数组中元素的冒泡排序。Sort()方法需要数组中的元素实现IComparable接口。System.String和System.Int32实现了IComparable接口,所以可以直接对包含这些类型的元素排序1 string[] names = { "Mike Lissick", "Mark Allen", "John Dixon", "Greg" };2 Array.Sort(names);3 foreach (string name in names)4 {5 ... 阅读全文

posted @ 2013-03-06 17:09 LilianChen 阅读(811) 评论(0) 推荐(0) 编辑

2013年3月5日

C#:定制类型的数组,Array类

摘要: 1、 定制类型的数组 1 using System; 2 3 namespace ConsoleApplication4 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Person[] myPersons = new Person[2];10 myPersons[0] = new Person("Lilian", "Chen");11 myPersons[1] = new Person("1"... 阅读全文

posted @ 2013-03-05 18:32 LilianChen 阅读(16449) 评论(0) 推荐(2) 编辑

C#:接口

摘要: 接口名传统上以字母I开头,以便知道这是一个接口从接口中派生完全独立于从类中派生在声明接口成员的时候,只要指明接口成员的名称和参数就可以了,接口一旦被继承,子类需要提供方法的所有实现代码。接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。接口和类都可以继承多个接口using System;namespace ConsoleApplication3{ class Program { static void Main(stri... 阅读全文

posted @ 2013-03-05 16:37 LilianChen 阅读(1777) 评论(0) 推荐(3) 编辑

2013年3月4日

C#:抽象类和抽象函数, 密封类和密封方法

摘要: 1. 抽象类和抽象函数C#中使用abstract关键字,将类和函数声明为抽象类或抽象函数抽象类不能实例化,抽象函数没有执行代码,必须在非抽象的派生类中重写抽象函数是虚拟的,但不需要提供virtual关键字,否则会报错如果类包含抽象函受,该类将也是抽象的,也必须声明为抽象的 abstract class MyAbstract { // 变量的定义不适用abstract关键字 private int i; // 属性 public abstract int count { get; set; } // 方法 ... 阅读全文

posted @ 2013-03-04 13:43 LilianChen 阅读(4766) 评论(2) 推荐(2) 编辑

2013年3月1日

C#:重载、重写、隐藏的定义

摘要: 1. 继承的类型:实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。借口继承:表示一个类型之继承了函数的签名,没有继承任何实现代码。2. 多重继承C#不支持多重实现继承,允许类型派生于多个接口。3. 虚方法把一个基类函数声明为virtual,该函数就可以在派生类中重写。4. 隐藏方法如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual和override,派生类方法就会隐藏基类方法。C#中使用关键字new声明我们要隐藏一个方法:class MyDerived 阅读全文

posted @ 2013-03-01 17:44 LilianChen 阅读(5606) 评论(0) 推荐(1) 编辑

C#:扩展方法和外部方法

摘要: 1. 扩展方法扩展方法是静态方法,是类的一部分,但是实际上没有放在类的源代码中。扩展方法所在的类也必须被声明为staticC#只支持扩展方法,不支持扩展属性、扩展事件等。扩展方法的第一个参数是要扩展的类型,放在this关键字的后面,告诉编译期这个方法是Money类型的一部分。在扩展方法中,可以访问扩展类型的所有公共方法和属性。using System;namespace ConsoleApplication5{ class Program { static void Main(string[] args) { Money cash ... 阅读全文

posted @ 2013-03-01 14:41 LilianChen 阅读(4770) 评论(2) 推荐(3) 编辑

2013年2月28日

C#:const 和readonly的区别

摘要: const字段只能在该字段的声明中初始化;readonly字段可以在声明或者构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值const字段为编译时常数;readonly字段可用于运行时常数const默认就是静态的,而readonly如果设置成静态的就必须显示声明看看下面的语句中static readonly和const能否互换:1. static readonly MyClass myins = new MyClass();不可以换成const。 new是需要执行构造函数的,所以无法在编译期间确定2. static readonly MyClass myins 阅读全文

posted @ 2013-02-28 16:37 LilianChen 阅读(753) 评论(2) 推荐(3) 编辑

C#:部分类,静态类

摘要: 1. 部分类partial关键字的用法:把partial放在class, struct, interface关键字的前面,以用来把类,结构,接口放在多个文件中。 // Program 位于两个不同的源文件BigClassPart1.cs和BigClassPart2.cs // BigClassPart1.cs partial class Program { public void MethodTwo() { } } // BigClassPart2.cs partial class Program { public void MethodOne() { } static void Mai... 阅读全文

posted @ 2013-02-28 13:25 LilianChen 阅读(1111) 评论(2) 推荐(0) 编辑

导航