摘要: var关键字只能用于方法或属性范围内的本地变量。其不能用来定义返回值,参数或自定义类型或结构的字段数据。 阅读全文
posted @ 2012-05-25 16:46 rarry 阅读(174) 评论(1) 推荐(0) 编辑
摘要: 首先,说一下在C#中的情况:一. const关键字: const是用来定义常量(它在赋初始值后从未变过),在定义时必须为其指定初始值。 const所定义的常量字段是隐式静态的,即你可以直接在类级别上进行调用,而不在对象实例上。 const定义的常量,最大的限制就是:在编译时必须知道常量的值。二.readonly关键字: readonly严格说是定义变量的,不过,其上赋初值之后不能改变。 readonly字段的值可以在运行时而不是编译时决定,但仅限于在构造函数中赋值,其它地方是违法的。 readonly字段不是隐式静态的。如果希望和const字段一样在类级别公开,则必须显示使用static关键字 阅读全文
posted @ 2012-05-23 22:07 rarry 阅读(898) 评论(0) 推荐(0) 编辑
摘要: Lambda其实就是匿名方法的简写。而匿名方法其实是一个定义委托,然后给委托对象添加方法过程的简写。事件其实就是委托的语法糖。强调一下方法组转换语法:其允许我们在调用以委托作为参数的方法时直接提供方法的名称,而不用创建委托对象。 阅读全文
posted @ 2012-05-10 20:51 rarry 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 首先要知道命名空间System.Collections.Generic其为大多数非泛型接口都定义了泛型版本。了解其中几个泛型接口和核心类:1.List<T>类其主要可以动态调整内容。2.Stack<T>类表示以后进先出的方式维护数据的集合。包含Push()和Pop()方法。3.Queue<T>类表示以先进先出的方式访问数据的容器。包含Dequeue(),Enqueue(),Peek()方法。4.SortedSet<T>类.NET4中新引入的。这个类中的项是排序的,在插入和移除项之后,也能自动确保排序正确。不过,你必须通知它按何种方式排序,可以向其 阅读全文
posted @ 2012-05-07 21:15 rarry 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 接口,其实并不难理解。就是一组抽象成员的集合。 其成员只能是方法和属性的签名,不能有具体实现。而且接口的成员也不指定修饰符(因为所有接口成员都是隐匿公共的和抽象的)。当一个类或者结构实现包含同名成员的接口,这时我们可以通过显式实现解决命名冲突。大致模式如下:returnType InterfaceName.MethodName(params)注意:此时,不能提供访问修饰符,因为显式实现的成员总是自动为私有的。也就是说这些显式实现的成员在对像级别是不可用的。下面介绍几种常用的预定义接口:一. 构建可处置类型//命名空间是Systempublic interface IDisposable { . 阅读全文
posted @ 2012-05-03 17:53 rarry 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 一. 构建可终结对象//System.Object public class Object { ... protected virtual void Finalize() { } }当在自定义类中重写Finalize()时,垃圾回收器就可以在从内存中删除这个对象前,调用对象的Finalize()方法。 注意,结构类型是不可以重写Finalize()的。这个成员被定义为被保护的,所以不能通过点操作符从类实例中直接调用一个对象的Finalize()方法。实际上,对象并不显示的调用Finalize()方法,其主要是由垃圾回收器... 阅读全文
posted @ 2012-04-30 21:39 rarry 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 静态构造函数的几点注意:一. 一个类只能定义一个静态构造函数。换句话说,静态构造函数不能被重载。二. 静态构造函数不允许访问修饰符并且不能接受任何参数。三. 无论创建了多少类型的对象,静态构造函数只执行一次。四. 运行库创建类实例或调用者首次访问静态成员之前,运行库会调用静态构造函数。五. 静态构造函数的执行先于任何实例级别的构造函数。补充一下静态类的定义:在类级别添加关键字“static"。 如果一个类被定义成静态的,就不能使用"new"关键字来创建并且只能包含用static关键字标记的成员或字段。静态类中只能有静态成员,而一般类中可以有静态成员也可以有其它非静 阅读全文
posted @ 2012-04-27 23:00 rarry 阅读(6381) 评论(0) 推荐(1) 编辑
摘要: 重要的两点:一. 如果按引用传递(添加ref关键字),被调用者可能改变对象的状态数据的值和所引用的对象。二. 如果按值传递(没有任何关键字修饰),被调用者可能改变对象的状态数据的值,但不能改变所引用的对象。具体整体可参考《C#与.NET4高级程序设计》第五版的P116~P118。 阅读全文
posted @ 2012-04-26 20:44 rarry 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 首先,.NET运行时的默认行为是忽略运算溢出。当只需要对部分代码进行溢出检测时,可以把该部分代码放入checked{}内,即可。当需要项目级别的溢出检测时,可以设置项目的属性中的生成->高级->检测运算上溢/下溢。如果在设置项目级别的溢出检测的前提下,有部分代码是可以忽略运算溢出,此时可以把这部分代码放入unchecked{}中,则表示该段代码的溢出是可以接受的。简要说明一下checked用法:如果我们使用了些命令或关键字,则C#编译器会使用额外的CIL指令来测试在将两个数值数据类型相加,相乘,相减和相除时可能产生的溢出情况。如果发生了溢出,则会得到一个运行异常:System.Ov 阅读全文
posted @ 2012-04-26 18:38 rarry 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 网页中常见的图像格式有两种:JPEG,GIF一.JPEG(Joint Photographic Experts Group)是特别为照片图像设计的文件格式。JPEG支持数百万种色彩。JPEG是质量有损耗的格式,这意味着在压缩时,一些图像数据丢失了,这降低了最终文件的质量,然而,图像数据数据被抛弃得很少,不会在质量上有非常明显的不同。二.GIF(图形交换格式)是网页图像中很流行的格式。虽然它仅包括256种色彩,但GIF提供了出色的,几乎没有丢失的图像压缩,并且GIF可以包含透明区域和很多动画。它靠水平扫描像素行找到固定的颜色区域进行压缩,然后减少同一区域中的像素数量。因此,GIF通常适用于卡通, 阅读全文
posted @ 2011-12-25 09:51 rarry 阅读(4927) 评论(0) 推荐(0) 编辑