摘要:C#4.0新特性之(四)新的LINQ扩展方法-Zip()1.简介 所谓zip(中文有拉链的意思),就是像拉链一样,把两个list缝合在一起。Python中有个zip函数可以用来方便的合并两个或者多个集合,例如:[代码]以上代码会打印出Freesc HuangJoshua GuanKen Wang在C#4.0中,我们可以看到一个类似的扩展函数[1]:代码2 Code highlighting pr...
阅读全文
摘要:C#4.0新特性之(三)协变与逆变1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见。C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要是两种运行时的(隐式)泛型类型参数转换。简单来讲,所谓协变(Covariance)是指把类型从“小”升到“大”,比如...
阅读全文
摘要:C#4.0新特性之(二)命名参数,可选参数与COM互操作1.简介 之前C#(2.0)和java一样是一门的纯粹的面向对象的语言,他们都使用重载而不是可选参数。但是实际上使用的其他外部程序,COM组件却经常不要求指定所有参数(这在很多VC,VB编写的组件或者操作IronPython的对象的时候很常见,他们一直使用可选参数)。这会导致一个C#程序员不得不用Type.Missing塞满整个参数列表。不...
阅读全文
摘要:C#4.0新特性之(一)动态查找 在大神Anders的领导下,C#这门语言也越来越快地朝着编程语言宇宙第一神器进化,C#4.0的新特征都是围绕“动态”(dynamic)的概念的,本文我们先来看看第一个新特性:动态查找(Dynamic Lookup)。1.初识dynamic动态查找允许动态(即在运行时)实现对某个对象的操作与对象类型的绑定,而不管这个对象是来自COM,Iro...
阅读全文
摘要:题目:Description有只企鹅叫豆豆,总是被别的企鹅欺负。豆豆在长期的隐忍之后,掌握了所有企鹅的高度和攻击力强度,还得到了一把黄金剑。在拥有了黄金剑以后,豆豆终于可以展开绝地大反击。但这把黄金剑的用法却很奇怪。首先,豆豆第一次可以选择任何一只企鹅开始挑战。豆豆这一次必胜。再次,当豆豆已经挑战过某一只企鹅后,再下一次的挑战对象只能是比上一名对手高,且比上一名对手攻击力强的企鹅。这样豆豆必胜。否...
阅读全文
摘要:猜猜下面两部分C#代码的输出是什么:(一)[代码](二)[代码]如果你是一个C++程序员, 也许上面并不是个陌生的用法, 因为C++里面可以使用函数指针,如下:[代码]但是C#里面没有, 不过C#里面有委托. 它起着类似的作用, Lambda表达式的值是委托类型, 第一个例子里面什么输出也没有, Print函数简单返回了一个委托(Action类型), 也可以看作是指向函数Funtion(){Con...
阅读全文
摘要:Mark Zhou(周融)最近在他的blog上面开始了Visual Studio 2010 和 .NET Framework 4.0 专题, Mark现在Microsoft总部(Seatle,US)的服务器工具组(STB)工作,这个系列算是比较一手的中文资料.值得关注: Visual Studio 2010 和 .NET Framework 4 专题 - 1: 概述 Visual Studio ...
阅读全文
摘要:
本文从最基本的String开始,由浅入深地阐述了作者对Immutable的见解。并结合C#语言的不同版本中的特征探讨了Immutable的实现方式。
Keywords:
C#,immutable class,immutable field,System.String,readonly,const,Anonymous Type
阅读全文
摘要:and not "a feature of .Net Fx 3.0+" the following code can be successfully compiled when targeting .net Fx 2.0 (and .net CF 2.0 platform as well): Code highlighting produced by Actipro CodeHighlighter...
阅读全文
摘要:本文结合一个有趣的例子演示了如何设置CPU的线程依赖,并解释了物理线程和逻辑线程的区别和联系。
Keywords
CPU, Thread, ProcessThread, C#
阅读全文
摘要:一个简单的Immutable Class: class Contact { public Contact(String fullName, String phoneNumber) { this.fullName= fullName; this.phoneNumber= phoneNumber; } public Contact Ch...
阅读全文
摘要:本文可以看作是Chris Tacke的文章An Introduction to WCF for Device Developers的翻译,文中代码由于笔者调试需要稍作了修改,局部做了进一步的说明,并将部分链接更新。
Keyword
Windows Mobile, WCF, .NET CF, Services, Xml Serialization
阅读全文
摘要:这是C#中一个有趣的现象,也许您从中可以窥见些许CLR在构造类型时的行为,以及JIT编译的触发式编译过程。
阅读全文
摘要:我们知道C#是一门“安全”的的语言,以至于它不让我们修改已装箱值类型实例中的字段。因为这种尝试会带来出乎意料的效果。下面就来解释一下为什么会有这种让很多程序员“意外”的情况发生以及如何“欺骗”C#来实现程序员真正的意图
阅读全文
摘要:本文阐述了值类型装箱,拆箱过程以及CLR在背后的行为。
阅读全文
摘要:前两天看了一下Lambda Expression,写点东西希望对大家理解Lambda表达式有所帮助!
阅读全文
摘要:装了VS2008 beta 2 ,今天小爽了一把CSharp3.0,总的感受就是微软帮程序员又分担了很多负担,编译器的编写者试着将程序员的一些冗余工作交给编译器去完成,程序员写起代码来更加顺畅。从语言的角度来讲,C#的抽象程度越来越高了。
阅读全文
摘要:装箱过程,如: myStruct myobj= new myStruct(); object baseobj =myobj; 在上述隐式转换中,myobj的内容被复制到堆上,放在一个装箱的对象上,baseobj对象引用设置为该对象。 让我们来看看在后台发生什么吧:实际上在最初定义myStruct结构时,.NET FX 隐式地提供另一个(隐式的)类,即装箱的myStruct类,它包括与myStru...
阅读全文
摘要:“可空类型表示可被赋值为 null 值的值类型变量。”
如果在程序中使用可空类型,需要考虑到与一些操作符使用时的影响。
阅读全文