• λ我爱Aspx >> C#.Net >> C#2.0新特性探究之模拟泛型和内置算法
  • C#2.0新特性探究之模拟泛型和内置算法

  • :aspxer  Դ:internet  :2007-5-20 15:38:44  ؼ:c#
  • C#2.0新特性探究之模拟泛型和内置算法

    在C#2.0中,匿名方法、IEnumerable接口和匿名方法的合作,使很多的编程任务变得非常的简单,而且写出来的程序非常的优美。

    比如,我们可以写出如下的代码:

    List<Book> thelib = Library.getbooks();

    List<Book> found = thelib.FindAll(delegate(Book curbook)

    {

    if (curbook.isbn.StartsWith("..."))

    return true;

    return false;

    });

    foreach (Book b in found)

    Console.WriteLine(b.isbn);

    这段程序非常简单的展示给我们需要查找的信息,代码也非常的直接易懂。内置的数据结构给了我们强大的算法支持,不过,能不能够为自定义的类定义类似的算法呢?

    比如,如果我有一个自定义的Library类并没有使用List<Book>存储数据,而是使用某种自定义的数据结构,我能不能也让用户使用类似的语法,忽略存储细节的使用匿名委托来实现特定的算法呢?

    答案当然是肯定的,而且在C#中实现这样的功能是非常的简单。

    首先让我们看看FindAll中用到的匿名委托的原型

    public delegate bool Predicate<T>(T obj);

    很明显的,上面的代码等于注册了一个搜索的回调,而在List内部定义了某种遍历的机制,从而实现了一个漂亮的算法结构Closure。

    看到了这些,我们就可以定义自己的算法结构了,首先,我定义了一个如下的类

    public class MyVec<T>

    {

    Ҷƪл˵?
  • һƪC#2.0 新特性探究(二) 委托与匿名委托
    һƪ用Visual C#打造个性化的IE浏览器