
C#
文章平均质量分 78
fox_click
Programming is just programming,life is much more than programming
展开
-
lambda表达式与函数指针
猜猜下面两部分C#代码的输出是什么: (一)Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> static void Main(string[] args) { Print(23);原创 2009-05-30 12:21:00 · 711 阅读 · 0 评论 -
浅析form传值
摘要一般的工程都是多个form组成的,各个窗体之间经常要灵活的传递数据。下面分享一点自己的经验:窗体传值的方法有很多,下面仅介绍我用过的一些,不知道官方叫这些什么方法,大家也可以找找看其他的。通过构造器传值 这是最简单的一种方式,例如我从form1中要传一个字符串去form2 首先,在form2的构造器中稍作修改: public Form2(St原创 2007-05-05 17:31:00 · 513 阅读 · 0 评论 -
豆豆与黄金剑, 一道典型DP题的C#解法
题目:Description有只企鹅叫豆豆,总是被别的企鹅欺负。豆豆在长期的隐忍之后,掌握了所有企鹅的高度和攻击力强度,还得到了一把黄金剑。在拥有了黄金剑以后,豆豆终于可以展开绝地大反击。但这把黄金剑的用法却很奇怪。首先,豆豆第一次可以选择任何一只企鹅开始挑战。豆豆这一次必胜。再次,当豆豆已经挑战过某一只企鹅后,再下一次的挑战对象只能是比上一名对手高,且比上一名对原创 2009-07-25 20:21:00 · 955 阅读 · 0 评论 -
[关注]Visual Studio 2010 和 .NET Framework 4.0 专题
Mark Zhou(周融)最近在他的blog上面开始了Visual Studio 2010 和 .NET Framework 4.0 专题, Mark现在Microsoft总部(Seatle,US)的服务器工具组(STB)工作,这个系列算是比较一手的中文资料.值得关注:Visual Studio 2010 和 .NET Framework 4 专题 - 1: 概述 Visual原创 2008-10-31 12:23:00 · 414 阅读 · 0 评论 -
[C# Tips]再谈值类型的装箱和拆箱
Freesc Huang @ HUST All Rights Reserved2008-2-11Keywords.NET Framework,C#,值类型,装箱,拆箱,CLR正文半年之前,我曾经写过一篇关于值类型装箱问题的短文(这里),现在看来,有些东西当时还是没有完全说开,这次特地拿了一个例子再来谈谈。理解这些问题,对于一个.NET程序员来说很基础,也很原创 2008-02-11 20:29:00 · 409 阅读 · 0 评论 -
C# tips ---值类型的装箱和拆箱
装箱过程,如:myStruct myobj= new myStruct();object baseobj =myobj;在上述隐式转换中,myobj的内容被复制到堆上,放在一个装箱的对象上,baseobj对象引用设置为该对象。让我们来看看在后台发生什么吧:实际上在最初定义myStruct结构时,.NET FX 隐式地提供另一个(隐式的)类,即装箱的myStruct类,原创 2007-09-07 00:30:00 · 282 阅读 · 0 评论 -
C# tips ---关于可空类型
1) 在与1元或二元运算符一起使用时,如果其中一个操作数为null或两个均null,则结果为null。如:int? a = null;int? b = a+3;则b为null 2) 比较可空类型时,只要有一个操作数为null,结果就为false如:int? a = null;int? b = 8;(a>=b)将返回false而正是因为原创 2007-09-06 00:30:00 · 308 阅读 · 0 评论 -
C#语法中比较特别之处---狗尾续貂
1.在C++中允许从一个case贯穿到另一个case标签比如:int a =1;switch(a){ case 1: some statements; case 2; other statements; break;}第一个case和第二个case之间可以没有break而在C#中这个break不能省略.3.as和is只会检测待转化类型的类型,而不会进行其它操作原创 2007-07-14 01:30:00 · 339 阅读 · 0 评论 -
C#4.0新特性之(一)动态查找
C#4.0新特性之(一)动态查找 在大神Anders的领导下,C#这门语言也越来越快地朝着编程语言宇宙第一神器进化,C#4.0的新特征都是围绕“动态”(dynamic)的概念的,本文我们先来看看第一个新特性:动态查找(Dynamic Lookup)。1.初识dynamic动态查找允许动态(即在运行时)实现对某个对象的操作与对象类型的绑定,而不管这个对象是来自COM,原创 2009-11-30 20:25:00 · 1508 阅读 · 0 评论 -
C#4.0新特性之(二)命名参数,可选参数与COM互操作
C#4.0新特性之(二)命名参数,可选参数与COM互操作1.简介 之前C#(2.0)和java一样是一门的纯粹的面向对象的语言,他们都使用重载而不是可选参数。但是实际上使用的其他外部程序,COM组件却经常不要求指定所有参数(这在很多VC,VB编写的组件或者操作IronPython的对象的时候很常见,他们一直使用可选参数)。这会导致一个C#程序员不得不用Type.Missing原创 2009-12-02 16:22:00 · 1685 阅读 · 0 评论 -
C#语法中比较特别之处--卷一
由于c#是由设计.net本身的人设计出来的,所以c#才是.net上最一流的语言。实际上,已经有一百多万行c#代码用于实现.Net class framework。要发挥出.net平台全部的效能,只有c#才是首选。1,switch语句可以用来测试string型的对象这在c,c++,java等其他各主流语言中都是不可以的,唯独c#可以。例如string a="haha原创 2007-07-14 01:31:00 · 351 阅读 · 0 评论 -
CSharp3.0锐利初体验(一)
装了VS2008 beta 2 ,今天小爽了一把CSharp3.0,总的感受就是微软帮程序员又分担了很多负担,编译器的编写者试着将程序员的一些冗余工作交给编译器去完成,程序员写起代码来更加顺畅。从语言的角度来讲,C#的抽象程度越来越高了。下面这个程序包含了一部分C#3.0的新特征: 1using System; 2 3using System.Colle原创 2007-09-26 08:30:00 · 346 阅读 · 0 评论 -
An Immutable Class
一个简单的Immutable Class:class Contact{ public Contact(String fullName, String phoneNumber) { this.fullName= fullName; this.phoneNumber= phoneNumber; } pub原创 2008-05-18 21:26:00 · 330 阅读 · 0 评论 -
WCF for .NET CF快速入门
摘要本文可以看作是Chris Tacke的文章An Introduction to WCF for Device Developers的翻译,文中代码由于笔者调试需要稍作了修改,局部做了进一步的说明,并将部分链接更新。KeywordWindows Mobile, WCF, .NET CF, Services, Xml Serialization这是一篇我推荐给很多朋友看过原创 2008-03-18 04:27:00 · 435 阅读 · 0 评论 -
[C#.Tips]也来谈谈接口欺诈
不得不先说明一下,这又是一篇跟值类型的装箱拆箱有关的文章,尽管我之前已近写了两篇随笔来阐述这个很基础的问题了。它们分别在:这里和这里。本文中的代码示例出自后者,稍作了修改。我们知道C#是一门“安全”的的语言,以至于它不让我们修改已装箱值类型实例中的字段。因为这种尝试会带来出乎意料的效果。下面就来解释一下为什么会有这种让很多程序员“意外”的情况发生以及如何“欺骗”C#来实现程序员真正的原创 2008-02-14 03:29:00 · 416 阅读 · 0 评论 -
多处理器的线程依赖
多处理器的线程依赖摘要本文结合一个有趣的例子演示了如何设置CPU的线程依赖,并解释了物理线程和逻辑线程的区别和联系。KeywordsCPU, Thread, ProcessThread, C#首先要搞清楚的是,托管代码中的线程(Thread)并不是真的线程(OS Thread)。它只是逻辑上我们划定的线程。逻辑上的线程并不执行,实际执行的是物理线程或者叫OS原创 2008-06-02 22:26:00 · 445 阅读 · 0 评论 -
[C# Tips] 有趣的类型静态构造器
这是C#中一个有趣的现象,也许您从中可以窥见些许CLR在构造类型时的行为,以及JIT编译的触发式编译过程。看下面一段代码: 1 class Program 2 { 3 static void Main() 4 { 5 myValueType1 type1 = new myValueType1();原创 2008-02-17 00:28:00 · 294 阅读 · 0 评论 -
理解Lambda表达式
先来看两段代码:Thread t = new Thread(() => { AddIt AddDelegate = new AddIt(AddItem); this.Invoke(AddDelegate); }); Thread t3 = new Thread(new ThreadStart(() => { AddIt AddDelegat原创 2007-09-26 13:30:00 · 337 阅读 · 0 评论 -
C#语法中比较特别之处---卷二
发信人: lightning (非主流华工人|支持pplive)发信站: 武汉白云黄鹤站 (2006年03月23日14:07:59 星期四)之前有个兄弟给我的卷一re了帖子,我当时没有g,m,直到他把它删掉才后悔莫及,人生最痛苦的事情莫过于此。。。。。。好,即便如此,我们还是满怀希望的向前奔去。接着写卷二。还要提一下,上次最后说到的delegate,在我了解了它的实现和用途以及看到我原创 2007-07-14 01:31:00 · 387 阅读 · 0 评论 -
也说C#中的Immutable
也说C#中的Immutable 摘要:本文从String开始,由浅入深地阐述了作者对Immutable的见解。并结合C#语言的不同版本探讨了Immutable的不同实现方式。Keywords:C#,immutable class,immutable field,System.String,readonly,const,Anonymous Type 有一种很简单也原创 2008-07-26 18:24:00 · 1144 阅读 · 0 评论 -
Lambda expression is a feature of VS2008
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 CodeHigh原创 2008-07-24 22:25:00 · 349 阅读 · 0 评论 -
C#4.0新特性之(三)协变与逆变
C#4.0新特性之(三)协变与逆变1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见。C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要是两种运行时的(隐式)泛型类型参数转换。简单来讲,所谓协变(Covariance)是指把类型从“小”升到“大”,比如从子类升级到父类;逆变则是指从原创 2009-12-03 22:22:00 · 5115 阅读 · 4 评论