代码改变世界

随笔分类 -  CLR

c#进阶理解property属性和属性值之惑

2010-12-28 04:51 by 撞破南墙, 3092 阅读, 收藏, 编辑
摘要: 1 简单demo 2 使用reflactor分析 3 使用属性的提醒 4 我对属性的理解 5 属性需要定位吗? 6 扩展阅读 阅读全文

c#进阶params可变个数的参数

2010-12-28 02:55 by 撞破南墙, 3814 阅读, 收藏, 编辑
摘要: 1 简单使用 2 可变个数的参数params 的原理 3 性能分析 4 较佳实践建议 阅读全文

c#进阶-方法中的ref和out

2010-12-27 22:30 by 撞破南墙, 2194 阅读, 收藏, 编辑
摘要: 在一个方法中 你必须知道每个参数是引用类型还是值类型否则你将发现你无法控制程序。 这些细节并不是每个.NET程序员都需要知道,但是却是进阶必备的,差距也在于此。 阅读全文

c#进阶-methods中3explicit和implicit

2010-12-26 10:14 by 撞破南墙, 442 阅读, 收藏, 编辑
摘要: 介绍explicit和implicit 阅读全文

C#进阶可选参数和命名参数

2010-12-26 04:31 by 撞破南墙, 1886 阅读, 收藏, 编辑
摘要: 1简单实现: [代码] 2但是如果指定参数的一个实现非常容易造成版本兼容的问题 可选参数,属于一种有争议的东西。 使用可选择参的确很方便,但是,一旦跨编译器,或跨语言的时候,甚至,在继随时就有麻烦了。 默认参数的默认值应该是多少,这需要从原来的程序中获得。而一旦原来的程序版本升级时改了默认值,那就完蛋了。 在继承时,如果继承的函数默认值被改了,也是一个很令人头晕的事。 来自这里 但是我们可以... 阅读全文

C#进阶 Methods下 Extension Methods

2010-12-25 13:46 by 撞破南墙, 1745 阅读, 收藏, 编辑
摘要: 1 c#的扩展方法从一个简单的例子开始 [代码] 值得注意的是 在Program 的.CS文件里 并没有 引用 扩展方法的命名空间, 因为他的命名空间就是SYSTEM...这个又好又坏,对于多人来说,按理说命名空间不要取默认的。. 一些说明: 1 C#只支持扩展方法,不支持扩展属性,扩展事件。。。等 2 方法名无限制,第一个参数必须带this 2为集合做扩展方法 [代码] 3更多细节 ... 阅读全文

c#进阶 methods中2overload methods

2010-12-25 12:05 by 撞破南墙, 1274 阅读, 收藏, 编辑
摘要: CLR并不知道发生了操作符重载这回事,因为在编译的过程中 各种操作符都被生产了对应的代码。比如说+被生产为一个加法函数 [代码] 自己动手为 类A重载一个操作符 [代码][代码] 能够允许重载的操作符非常有限,只是一般的+ - 等等。 CLR中更多的重载的可以参看 ECMA specifications(www.ecma-international.org/publications/standar... 阅读全文

c#进阶methods中

2010-12-23 15:54 by 撞破南墙, 1876 阅读, 收藏, 编辑
摘要: 值类型实例的函数 值类型不需要构造函数也不会被默认添加,但是你可以为他定义带参构造函数。 结构体被使用后中变量被初始化为0/NULL.值类型可以直接赋值,当然也可以 使用构造函数赋值,但其构造函数不能为无参构造函数否则会报错 "error CS0568: Structs cannot contain explicit parameterless constructors." c#编译器这... 阅读全文

c#进阶-methods上

2010-12-23 12:47 by 撞破南墙, 1766 阅读, 收藏, 编辑
摘要: 构造函数的那些事 如果你不为类定义一个构造函数,他将在编译时候自动产生 public class SomeType { } public class SomeType { public SomeType() : base() { } } 两段代码的编译结果一样。 如果父类是一个抽象类,那么对父类构造函数的访问权限是 protected。 否则是public。如果父类没有提供一个无参构造函数... 阅读全文

C#中的常量的使用

2010-12-22 13:09 by 撞破南墙, 1691 阅读, 收藏, 编辑
摘要: 常量在编译器确定,并且不会改变,所以常量的类型必须是基础数据类型(primitive types)Boolean, Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64,UInt64, Single, Double, Decimal, and String。当然也有特殊情况,即给定义非基础数据的常量的时候赋值null。 常量被当做静态变量。常... 阅读全文

C#功能派的进阶2--类型的那些事

2010-12-09 11:08 by 撞破南墙, 677 阅读, 收藏, 编辑
摘要: 类型的这些事和那些事. 阅读全文