C# 谓词

王林
王林原创
2024-09-03 15:27:251085浏览

内置泛型类型委托是 C# 中的谓词委托,在命名空间系统下定义。包含特定一组条件的命名空间和方法可以与谓词委托一起使用,以确定传递的参数是否可以满足给定的条件,并且此条件仅采用一个输入,返回值 true 或 false 以及谓词委托与其他委托 Func delegate 和 Action delegate 相同。

语法:

public delegate bool Predicate <in P>(P obj);

其中对象类型由 P 表示,obj 是比较方法内定义的条件并由谓词委托表示的对象。

C# 中谓词委托的工作

  • 返回 true 或 false 的函数是谓词,对谓词的引用是谓词委托。
  • 谓词委托的功能是随着.NET 2.0的发布而引入的。框架。
  • 可以定义谓词函数,并且可以通过谓词委托将其作为参数传递给任何其他函数。
  • Func 的一种特殊情况是谓词委托,它只接受一个参数作为输入,并返回一个布尔值,该值要么为 true,要么为 false。
  • 任何方法都可以写在谓词委托中,甚至是 lambda 表达式或匿名方法。
  • 当泛型类型与 lambda 表达式一起使用时,谓词委托将其作为参数。

C# 谓词示例

下面给出了提到的示例:

示例#1

C# 程序,演示在程序中使用谓词委托来检查作为参数传递的给定字符串是否为大写字母。

代码:

using System;
//a namespace called program is defined
namespace program
{
//a class called check is defined
public class check
{
//a Boolean method is defined to check if the given string is written in capital letters or not. If written in capital letters, true is returned else False is returned.
static bool IsUC(string stri)
{
return stri.Equals(stri.ToUpper());
}
//main method is called
static void Main(string[] args)
{
//a predicate delegate is defined with object type as string and IsUC is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
Predicate<string> isU = IsUC;
//The result of the predicate delegate is stored in a variable called res
bool res = isU("welcome to c#");
//the result is displayed
Console.WriteLine(res);
}
}
}

输出:

C# 谓词

说明:

  • 在上面的程序中,定义了一个名为program的命名空间。然后定义一个名为check的类。然后定义一个布尔方法来检查给定的字符串是否是大写字母。如果给定字符串是大写字母,则返回 true,否则返回 False。然后调用main方法。
  • 然后定义一个谓词委托,对象类型为字符串,IsUC 是一个对象,它比较方法中定义的条件并由谓词委托表示。然后谓词委托的结果存储在名为 res 的变量中。然后显示结果。

示例#2

C# 程序,演示在程序中使用谓词委托来检查给定字符串的长度是否小于指定值。

代码:

using System;
//a class called program is defined
class program
{
// a predicate delegate is defined with object type as string
public delegate bool my_del(string stri);
// a method is defined inside a predicate delegate by passing the object as parameter to check if the length of the given string is less than a specified value. If less than the given specified value, true is returned else false is returned
public static bool fun(string stri)
{
if (stri.Length < 5)
{
return true;
}
else
{
return false;
}
}
//Main method is called
static public void Main()
{
// a predicate delegate is defined with object type as string and fun is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
my_del obj = fun;
//The string to be passed as a parameter to predicate delegate is written here
Console.WriteLine(obj("Shobha"));
}
}

输出:

C# 谓词

说明:

  • 在上面的程序中,定义了一个名为program的类。然后将对象类型定义为字符串的谓词委托。然后在谓词委托中定义一个方法,通过将对象作为参数传递来检查给定字符串的长度是否小于指定值。如果字符串的长度小于给定的指定值,则返回 true,否则返回 false。
  • 然后调用Main方法。然后,谓词委托被定义为对象类型为字符串,而 fun 是一个对象,它比较方法内定义的条件并由谓词委托表示。然后最后写入要作为参数传递给谓词委托的字符串。

优点

以下是 C# Predicate 的优点:

  • 当我们必须过滤掉值列表时,谓词委托非常有用。
  • 谓词委托可以内联以实现一次性搜索功能。
  • 当我们必须在通用集合中搜索项目时,可以使用谓词委托。
  • 通过使用谓词委托,可以缩短代码长度,并且返回 true 或 false。
  • 匿名方法、lambda 表达式可以分配给谓词委托。
  • 谓词委托提供运行时的逻辑,它可以是简单的逻辑,也可以是复杂的逻辑。

以上是C# 谓词的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn