随笔分类 - [02] 语言编程
摘要:在上一篇解惑中,我们提到了对象的初始化顺序。当我们创建一个子类的实例时,总是会先执行基类的构造函数,然后再执行子类的构造函数。那么实例字段是什么时候初始化的呢?静态构造函数和静态字段呢?今天我们就来研究一下这个话题。
阅读全文
摘要:在C#中,用`virtual`关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生类重写(override)。虚方法是.NET中的重要概念,可以说在某种程度上,虚方法使得多态成为可能。然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。
阅读全文
摘要:只有当所判断的Type为参数且必须按引用传递的情况下,IsByRef才为true。
阅读全文
摘要:我们通常提到C#中的值和引用,大多数情况可能都是指值类型和引用类型,但实际上值和引用有着更加丰富的含义。我这两篇文章试图把这些概念总结出来,讲解了值类型和引用类型的值是什么,以及它们在按值传递和按参数传递时有什么相同和不同之处。
阅读全文
摘要:本文主要澄清关于C#值和引用的两个误区:值类型的存储位置和引用到底是不是地址。
阅读全文
摘要:对于一个动态类型来说,你可以认为它包含任意成员,它们都能通过编译。但到了运行时,到底是否拥有这些成员,就真相大白了。
阅读全文
摘要:在编写LINQ时,为了保持代码清晰,我们通常会将多个Where进行连接。但多个Where是否意味着多次迭代呢?直觉告诉我们显然不是。因为Where只是生成一个可迭代的对象,在对该对象进行foreach之前,是不会真正执行迭代的。但编译器是如何处理这种Where连接的呢?
阅读全文
摘要: 前一阵子更新了系统,鸟枪换炮地装上了WIN7,可是项目却出现了莫名其妙的问题。我这个项目的客户端启动之后会从服务端获取系统时间,然后更新本地时间。但我发现每次启动客户端后,本地时间都会被改为8小时之前。起初我以为是服务器上系统时间错了,也就没管,一直以8小时前的本地时间进行调试。但是当这影响了我的作息时间,导致下班延后给人一种主动加班的表象时,我无法容忍了,决定到服务器上一看究竟。
阅读全文
摘要:老赵在反对北大青鸟的随笔中提到了数组反转。这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常)。因为我写着写着,就写出来8种方法……现在我们以字符串的反转为例,来介绍这几种方法并对它们的性能进行比较。
阅读全文
摘要:C# FAQ最新的随笔中再次提出了使用表达式树访问对象及其成员的问题,这次讨论的是如何获取对象和属性的值。(该博客两个月前曾提出使用表达式树访问对象、类型和成员,我在第一时间进行了翻译)
阅读全文
摘要:使用表达式树访问对象的成员,可以避免常规反射方法导致的硬编码问题。
阅读全文
摘要:我们在写代码时往往会在foreach语句中使用某个方法,如:
foreach (string foo in Foo())
{
}
在这段代码中,Foo方法会执行多次吗?
阅读全文
摘要:在警惕值类型的陷阱中,乌卡卡同学指出第一个示例之所以出现问题,是因为委托的实现方式不对。我能想到的“委托的实现方式”除了这种正常的赋值,剩下的就是用Lambda表达式或匿名方法了了,于是我把代码改为如下的形式
阅读全文
摘要:在使用值类型LazyString分析字符串的评论中,有人贴出了这样两段有意思的代码。我们来逐一分析。
阅读全文
摘要:Jeffrey Richter在最新的随笔中透露,CLR via C# 3rd Edition已经提交出版社编辑,并将于明年3月22日Visual Studio 2010发布时同步出版。
阅读全文
摘要:委托与很多设计模式都有着千丝万缕的联系,在前面的随笔中已经介绍了委托与策略模式的联系,本节主要来讨论委托与其他两个模式:观察者模式和模板方法模式。
阅读全文
摘要:在把委托说透(1)和(2)中,先后介绍了委托的语法和本质,本文重点介绍.NET中与委托息息相关的概念——事件
阅读全文
摘要:这不是一篇介绍Lambda表达式与递归函数的随笔,而是介绍这方面知识的链接集合。
阅读全文
摘要:在上一篇随笔中我们通过示例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的实质。
阅读全文
摘要:委托,本是一个非常基础的.NET概念,但前一阵子在园子里却引起轩然大波。先是Michael Tao的随笔让人们将委托的写法与茴香豆联系到了一起,接着老赵又用一系列文章分析委托写法的演变,并告诫“嘲笑孔乙己的朋友们,你们在一味鄙视“茴”的四种写法的同时,说不定也失去了一个了解中国传统文化的机会呢!”。
阅读全文