C#4.0新特性之(三)协变与逆变 C#4.0新特性之(三)协变与逆变1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见。C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要是两种运行时的(隐式)泛型类型参数转换。简单来讲,所谓协变(Covariance)是指把类型从“小”升到“大”,比如从子类升级到父类;逆变则是指从
C#4.0新特性之(二)命名参数,可选参数与COM互操作 C#4.0新特性之(二)命名参数,可选参数与COM互操作1.简介 之前C#(2.0)和java一样是一门的纯粹的面向对象的语言,他们都使用重载而不是可选参数。但是实际上使用的其他外部程序,COM组件却经常不要求指定所有参数(这在很多VC,VB编写的组件或者操作IronPython的对象的时候很常见,他们一直使用可选参数)。这会导致一个C#程序员不得不用Type.Missing
C#4.0新特性之(一)动态查找 C#4.0新特性之(一)动态查找 在大神Anders的领导下,C#这门语言也越来越快地朝着编程语言宇宙第一神器进化,C#4.0的新特征都是围绕“动态”(dynamic)的概念的,本文我们先来看看第一个新特性:动态查找(Dynamic Lookup)。1.初识dynamic动态查找允许动态(即在运行时)实现对某个对象的操作与对象类型的绑定,而不管这个对象是来自COM,
Android手机防盗工具DroidGuard 前一阵子和Gildor以及fpy一起开发了一个小工具。项目名叫DroidGuard,顾名思义是保护手机的,但也绝非防火墙杀软之流。根据我们的调查,在以下几种场景丢失手机的案例比重还是相当大的:在教室上课、自习、睡觉,手机置于桌面或包中在宿舍或家中,人不在手机旁时(入室盗窃)在运动时,手机(放于包中)放在一旁被人顺手牵羊…DroidGuard正是为了应对这些情况,它发挥新型手机
Simple HostMonitor 实用的网管小工具 我的朋友Ken Wang(http://gildor.cnblogs.com/) , 最近写了一个小工具, 用来监测他那孱弱的服务器是否挂掉, 并实时产生提醒(windows alert,email,twitter)等.这个工具在Codeplex开源并提供下载(http://simplehostmonitor.codeplex.com/)下面是对它的描述:Simple Host Mo
Office Mobile 2010 Beta 发布了! 微软刚刚发布了Office Mobile 2010的beta版, 可以免费使用半年(2010年四月到期), 官方网站http://www.microsoft.com/office/2010/en/mobile/default.aspx,列举了office2010的10大新特性, 其中我最喜欢的是第三条:" When delivering a presentation,
试了一下.Net Fx 4.0中的Parallel Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> static string[] arr = Directory.GetFiles( @"C:/U
Lambda演算与科里化(Currying) Lambda演算与科里化(Currying) Lambda演算早在现代计算机问世以前,Lambda演算(λ演算)已经由图灵的老师阿隆佐·邱奇(Alonzo Church)引入。这种演算可以用来清晰地定义什么是一个可计算函数。它包括一条变换规则(变量替换)和一条函数定义方式,Lambda 演算的通用性在于任何一个可计算函数都能用这种形式来表达和求值。因而,它等价于后来提出的图灵
选择,冒泡,合并 via Python 前两天刚装了python 3.1.1, 禁不住技痒写点code。1.选择排序Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->>>> def SelSort(L): length=len(L) for i in range(le
寻找最大的钻石有多难 寻找最大的钻石有多难HUST微软技术俱乐部又要招新了,在准备招新工作的时候,我顺便翻阅了一下去年的笔试题,其中能力测试第一题是这样的: 电梯问题——一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。您乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问:怎样才能拿到最大的一颗﹖(提示:没有完美的策略,合理的取舍是解决问题的必要手段) 这是一个经
Matlab中的高级绘图 说是高级绘图, 其实在无比强大的matlab中并不难.1.3D曲线3维的曲线绘制几乎和2维的plot一样简单,不同的是我们使用的是plot3函数:>> time=0:0.001:4*pi;>> x=sin(time);>> y=cos(time);>> z=time;>> plot3(x,y,z,k,LineWidth,2);>> zlabel(Ti
visual studio 2008 sp1 "no template information found" 今天打开vs新建项目时候弹出“no template information found”,我的新建项目中仅剩下了Smart Device这一项,很是诡异。解决方案:打开visual studio 命令行运行以下指令:devenv /installvstemplates注意:其实你在vs2008命令行帮助中找不到这个参数,不过没关系,相信我;-)
[C Tips] 数组名一定代表指向数组第一个元素的指针--------吗? 无数的教科书都几乎没有严肃认真的面对这个问题。数组名就一定代表指向数组第一个元素的指针吗?猜猜下面的代码输出是怎么样的:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->char ga[] = "abcdefghijklm";void my
左值,右值,数组和指针 左值,右值,数组和指针为什么a=b? 在常见的C风格的语言中,有一些细微的差别是容易被忽视的,而正是这些看似非常简单的知识,有时候会成为我们理解程序,理解计算机行为的瓶颈。比如表达式:a=b; 这样的表达式在大多数编程语言中都是合法的,它是一个简单的赋值表达式,那么它如何来表示赋值的意思呢?通俗的来说,为什么当你敲下a=b这样的几个字符并运行程序,执行这条语句后a
三星(Samsung)发布了Windows Mobile SDK v1.2 距离1.0版本发布5个月之后, 三星发布了最新的Windows Mobile SDK v1.2, 来帮助开发者对三星系智能手机进行有针对性的开发, 新版本的特征中,最有趣的地方是增加了对调频广播和前后双摄像头的支持SDK和用户手册在这里下载:http://innovator.samsungmobile.com/down/cnts/toolSDK.detail.view.do?platfo
约瑟夫问题(Josephus Problem) 背景 相传公元一世纪著名犹太历史学家约瑟夫在罗马人占领乔塔帕特後,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先
由教科书函数swap想到的 经典的Swap几乎从远古时代至今的每一本程序设计语言的教材上, 都可以看到一个叫swap的函数, 书上这样告诉我们:(以C语言为例)Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void swap(int *a,
宇宙中存在绝对安全的手机么? 今天在zdnet上看到一篇指责iphone 3GS的数据加密功能行同虚设的文章。"我认为我们(开发者)中没人见过如此糟糕的加密实现", 一位iphone开发者如是说。原文见:http://news.zdnet.com/2100-9595_22-325008.html 然而,其他的手机就安全吗?文中提到的采用物理方法破解(physical access),对那些使用S
豆豆与黄金剑, 一道典型DP题的C#解法 题目:Description有只企鹅叫豆豆,总是被别的企鹅欺负。豆豆在长期的隐忍之后,掌握了所有企鹅的高度和攻击力强度,还得到了一把黄金剑。在拥有了黄金剑以后,豆豆终于可以展开绝地大反击。但这把黄金剑的用法却很奇怪。首先,豆豆第一次可以选择任何一只企鹅开始挑战。豆豆这一次必胜。再次,当豆豆已经挑战过某一只企鹅后,再下一次的挑战对象只能是比上一名对手高,且比上一名对
[分享]WCF Guidance for Mobile Developers Whitepaper V1 推荐一本介绍在Compact Framework使用WCF的手册,由某MVP在今年早些时候发布,附带示例源码可以在codeplex上下载(见http://wcfguidanceformobile.codeplex.com/).;-)