本帖最后由 caozhy 于 2011-04-20 11:50:38 编辑

解决方案 »

  1.   

    本帖最后由 caozhy 于 2011-04-20 11:49:15 编辑
      

  2.   

    本帖最后由 caozhy 于 2011-04-19 10:34:49 编辑
      

  3.   

    本帖最后由 caozhy 于 2011-04-19 10:35:00 编辑
      

  4.   

    C#中加入了IEnumerable接口及foreach in语句,迭代模式基本可以被撤销了
      

  5.   

    对于迭代来说,if (tn.Nodes.Count > 0) 的判断有点多余
      

  6.   

    C# 是支持闭包的 
    .net 4.0 版本已经加入了动态语言的接口 
      

  7.   

    lamda表达式是不是涉及到了很多中设计模式?
      

  8.   

    yield 是c#中很优雅的语法糖之一,相当好用!
      

  9.   

    好多模式都集成到语言了, 观察者也可以用event来代替了
      

  10.   

    是的。很明显,设计模式的很多动机就是将一部分实现推迟给调用者,实现扩展、重用。很明显lambda表达式是最方便和轻量的方式(优于继承和接口,也优于命名委托和匿名委托)。
      

  11.   

    简单工厂模式(SimpleFactory)  抽象工厂(AbstractFactory)
      

  12.   

    本帖最后由 caozhy 于 2011-04-19 21:41:39 编辑
      

  13.   

    还停留在vs系列的简单面向对象上没升级到这个程度,看了lz的东西很受启发。
    学无止尽啊…………
      

  14.   

    如果我因代码需要而去调用已封装好的方法,但又觉得不能满足自己的要求,Override 重新写一个,这是否涉及到贴中所说的设计模式?
      

  15.   

    正在研究一些常用的Design Pattern
      

  16.   

    请教下 第一个例子里面
     public static IEnumerable<TreeNode> GetAllNodes(this TreeView treeview)能编译过吗?
    TreeViewNodeIterator
    是怎么扩展到TreeView 上去的?
    foreach (TreeNode tn in treeView1.GetAllNodes())是不是
    foreach (TreeNode tn in TreeViewNodeIterator.GetAllNodes(treeView1))??第一个例子的代码我真没搞明白,请教了
      

  17.   

    这个例子需要C# 3.0(C# 2008)以上才能编译。参考MSDN的扩展方法。