gpt4 book ai didi

c# - 创建自定义谓词

转载 作者:行者123 更新时间:2023-11-30 21:30:40 25 4
gpt4 key购买 nike

我是 Lambda 和代理的新手。我认为我的问题可能不是一个好问题,但我正在尝试编写一个简单的自定义谓词,它的行为就像一个内置谓词。

所以我要分享我的代码:请与我分享我将要犯的错误:

内置谓词代码示例:

namespace Built_In_Predicate
{
class Program
{
static void Main(string[] args)
{

List<string> _ListOfPlayers = new List<string>()
{
"James Anderson",
"Broad",
"foo"
};

// Method 1. Predicate and Anonymous function.

Predicate<string> _Predicate = delegate (string someString) { return someString.Length == 3; };

string result = _ListOfPlayers.Find(_Predicate);

Console.WriteLine("Result : {0}", result);
}
}
}

尝试创建自定义谓词(代码):

namespace CustomPredicate
{
class Program
{
// Delegate (Takes some string as a Input and return a Boolean.)
public delegate bool CustomPredicate(string someString);

static void Main(string[] args)
{

List<string> _ListOfPlayers = new List<string>()
{
"James Anderson",
"Broad",
"foo"
};

// Instance of CustomPredicate.
CustomPredicate customPredicate = delegate (string someString) { return someString.Length == 3; };

string result = _ListOfPlayers.Find(customPredicate); // its error.
}
}
}

帮助将不胜感激。

最佳答案

委托(delegate)不能相互隐式转换,即使它们具有相同的签名也是如此。

Find期望一个 System.Predicate<T>所以你必须给它一个System.Predicate<T> .

你可以自己写Find如果您想使用自己的方法 CustomPredicate .

还有一些方法可以使用您的 customPredicate调用中的变量 Find :

_ListOfPlayers.Find(new Predicate<string>(customPredicate));
_ListOfPlayers.Find(customPredicate.Invoke);

关于c# - 创建自定义谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54072468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com