代码之家  ›  专栏  ›  技术社区  ›  4thSpace wkw

谓词在.NET 3.0中不可用+

  •  2
  • 4thSpace wkw  · 技术社区  · 15 年前

    谓词在.NET中是否可用?来自MSDN http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx ,我在任何地方都看不到谓词。我看到一个匿名返回一个布尔值,但没有泛型或“predicate”关键字。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Ahmad Mageed    15 年前

    与其为谓词内联委托,不如将其用作类型,然后传入。下面是一个例子:

    var list = new List<int>();
    list.AddRange(Enumerable.Range(1, 10));
    Predicate<int> p = delegate(int i)
                       {
                          return i < 5;
                       };
    list.RemoveAll(p);
    list.ForEach(i => Console.WriteLine(i));
    

    编辑: 要用现有方法声明谓词,您将使用:

    Predicate<int> p = IsLessThanFive;
    
    public bool IsLessThanFive(int number)
    {
        return number < 5;
    }
    

    更常见的替代方案是:

    list.RemoveAll(delegate(int i) { return i < 5; });
    // or...
    list.RemoveAll(i => i < 5);
    

    编辑: 要在另一篇文章的注释中回答您的其他问题,委托是一种定义方法签名的类型,可用于将方法作为参数传递给其他方法。如果你对C++有点熟悉,它们就像函数指针。有关学员的更多信息,请查看 this MSDN page .

        2
  •  3
  •   Jeff Sternal    15 年前

    Predicate 是一个 类型 (更具体地说,是委托类型) System 命名空间。它不是关键字。

        3
  •  1
  •   bobbymcr    15 年前

    绝对是3.0…请参阅该msdn页的底部:

    版本信息

    .NET框架

    支持: 3.5、3.0、2.0

    只要你在“使用系统”,你就应该看到它。

        4
  •  0
  •   ChrisF toni    15 年前

    That page on MSDN 是关于谓词(T)委托的,正如它所说:

    表示定义 一组条件并确定 指定的对象满足这些 标准。

        5
  •  0
  •   Mike Two    15 年前

    谓语 类型 3.5和4.0中是否有。