摘要: 有时候,我们不想用值类型的值,就是想用一个引用。.Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用。 首先,回顾两个重要的事实,1.对于引用 类型的变量,它的值永远是一个引用;2.对于值类型的变量,它的值永远是该值类型的一个值。 int i = 5; object o = i; int j = (int)o;这里有两个变量:i是值类型... 阅读全文
posted @ 2013-12-15 14:11 暴走小白 阅读(2013) 评论(0) 推荐(0) 编辑
摘要: c#中对接口的实现方式有两种:隐式实现和显式实现,之前一直没仔细看过,今天查了些资料,在这里整理一下。隐式实现的例子 interface IChinese { string Speak(); } public class Speaker:IChinese { public string Speak() { return "Chinese"; } }显示实现的例子interface IChinese { string Speak(); } p... 阅读全文
posted @ 2013-12-13 10:16 暴走小白 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 在最近的维护版本的开发中,经常碰到的一个问题:接手的项目中使用了OO的观念,可是大量使用继承,造成对子类的行为约束的过紧,子类很难扩展,此时如果修改父类的话,又容易误伤子类(因为一些子类的行为修改,而另一些又不需要修改)。被百般折磨后发现了策率模式,故在此记录下。为了表示结构,使用了下面的类图,很简单。DuckA,DuckB,DuckC均继承自Duck,并在Duck中实现了Swim()Quack(),所以现在的所有的鸭子都会游泳,都会叫,因为鸭子长的可以不一样,所以在子类中分别实现了Display()。这个结构没什么问题,也很不错,但是有一天突出需求变更了,要求鸭子们的叫声并不相同,但其中Du 阅读全文
posted @ 2013-08-29 20:33 暴走小白 阅读(836) 评论(2) 推荐(1) 编辑
摘要: 稍微总结下,System.IO提供了四种类型来实现,对单个文件和计算机目录结构的操作。Directory和File通过静态成员实现建立、删除、复制和移动操作(上图没有提及)。而FileInfo和DirectryInfo类型则通过实例级方法来实现类似的功能,并且更加推荐使用,原因是它们的成员方法返回强类型的对象。 FileStream和StreamReader/StreamWriter的主要区别在... 阅读全文
posted @ 2013-08-19 19:51 暴走小白 阅读(624) 评论(0) 推荐(2) 编辑
摘要: Enumerable.TakeWhile和Enumerable.SkpWhile Enumerable.TakeWhile和Enumerable.SkpWhile将通过判断条件,来获取和跳过序列。 TakeWhile方法会在条件为真时,将按照条件继续检索序列,直到条件为false。当条件为false时,则立刻停止检索,并返回此时已经检索过的序列。 SkpWhile方法会在条件为真时,将按照条件继续... 阅读全文
posted @ 2013-08-01 18:07 暴走小白 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 筛选序列 Enumerable.Distinct 对于复杂的对象列表,运行时引擎如何才能通过比较确定两个对象是否重复?对于复杂对象,必须提供一个比较器,即实现IEqualityComparer(Of T)执行比较的一个类实例。 假设有一个包括客户信息的序列,你希望得到这些客户坐在国家的专门列表。如果已有一个简单的国家列表,可使用默认比较器来比较字符串。但有可能面临的是一个客户类表(你当然可以使用s... 阅读全文
posted @ 2013-07-22 19:46 暴走小白 阅读(555) 评论(0) 推荐(0) 编辑
摘要: System.Linq.Enumerable类,提供了数十种称为扩展方法的共享方法,帮助您操作所有实现IEnumerable(of T)接口的类中的数据。由于Enumerable类的扩展方法可以处理许多其他类如(包括Array和List),因此不仅可以使用Enumerable类的方法来创建LINQ查询,还可以用它来操作数组和其他数据结构的行为。 查看Enumerable类扩展方法的文档,你会发现每... 阅读全文
posted @ 2013-07-10 20:54 暴走小白 阅读(4319) 评论(0) 推荐(1) 编辑
摘要: lambda表达式,将会带来代码的灵活性,同时使我们的代码更具表现力。 Dim doubleIt As Func(Of Integer, Integer) = _ Function(x As Integer) x * 2上面的这个例子,是一个基本lambda表达式定义的示例。它将 doubleIt 定义为接受一个整数并返回一个整数的 lambda 表达式。该 l... 阅读全文
posted @ 2013-07-08 19:20 暴走小白 阅读(404) 评论(0) 推荐(0) 编辑
摘要: selectMany Demo1: DateTime cutoffDate = new DateTime(1997, 1, 1); var orders = from c in customers where c.Region == "WA" from o in c.Orders where o.OrderDate >= cutoffDate ... 阅读全文
posted @ 2013-07-08 10:24 暴走小白 阅读(199) 评论(0) 推荐(0) 编辑
摘要: vb实现LINQ非常简单的例子: Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 7} Dim allNumbers = From number In numbers For Each num In allNumbers Console.WriteLine(num & " ") ... 阅读全文
posted @ 2013-07-06 17:34 暴走小白 阅读(3056) 评论(0) 推荐(0) 编辑