09 2013 档案
摘要:今天看了一篇博客,说的是导论的一道课后题以及博主的解答,感觉对逻辑思维的锻炼还是很有价值的,特意引用一下。这个题目的题意是这样的: 有N个人,分为好人和坏人两种,每次你可以挑两个人出来让他们互相指识彼此是好还是坏。好人一定说实话,坏人会乱说。现在你要从他们里面找出一个肯定是好人的。一共有三问:(1)证明若好人数目不超过N/2,则坏人们总可以通过故意捣乱,让你找不出正确答案。(2)证明若好人数大于N/2,存在一种方法可以通过floor(N/2)次判断使问题规模缩小到最多只有原来的一半。(3)证明若好人数大于N/2,可以用theta(N)次判断找出一个好人。 证明如下:记T=好人,F=坏人...
阅读全文
摘要:匿名方法允许我们指定一个内联委托的操作,为创建委托实例表达式的一部分。其可以对代码进行极度精简,当然可读性变得很差。下面看一个求平方根的例子。 List list = new List();list.Add(4);list.Add(5);list.Add(15);list.Add(20);list.Add(49);list.ForEach(delegate(int x) { Console.WriteLine(Math.Sqrt(x)); }); 乍眼一看,会发现其没有什么可读性。若既想精简,又要保持可读性怎么办呢,我们可以取一个折中的办法,即不再坚持“大括号单独占一行”的规则,但...
阅读全文
摘要:通俗来讲,委托就是吩咐别人去做某件事,但不知道他具体会怎么做。使用委托必须注意的一个问题是内存泄露问题:假如委托实例本身不能被回收,委托实例会阻止他的目标被作为垃圾回收。尤其是假如某“短命”的对象调用了一个“长命”的对象中的事件,并用其自身作为目标。“长命”对象间接容纳了对“短命”对象的引用,延长了“短命”对象的寿命。下面是一个只为委托而委托的例子:delegate void StringProgressor(string input); //声明委托类型 class Person { string name; public Person(string name) { t...
阅读全文
摘要:假如有以下xml文件 首先引用Xml.Linq命名空间,然后用以下方法进行读取XDocument doc = XDocument.Load("XMLFile1.xml"); var filtered = from p in doc.Descendants("Product") join s in doc.Descendants("Supplier") on (int)p.Attribute("SupplierID") equals (int)s.Attribute("SupplierID") o
阅读全文
摘要:前两天公司进了一批书,在借阅jon skeet的c# in deep收获颇大,本书特点是介绍了不同版本的c#所增加的新特性。今天先写一下书中对linq的描述。 很多初学者在使用VS2010或2013写代码时都会看见软件会自动帮我们引用linq这个命名空间,而不知其作用。linq全称为language integrated query,即语言集成查询,是c#3的核心所在,可使对多数据源的查询变得简单。 比如一段代码有一个Products类,其包含Name和Price两个属性。我们现在需要在原基础上增加一个suppliers类,其包含Name和SupplierID两个属性,这样需要在Produc.
阅读全文
摘要:从去年开始接触java到今年做.net,一直在博客园感悟。今日有感而发,随申请博客记录一下自己的程序员历程,以后抽时间写一写感悟和希望与大家分享的知识。
阅读全文

浙公网安备 33010602011771号