【发布时间】:2019-01-07 10:22:35
【问题描述】:
我是 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.
}
}
}
我们将不胜感激。
【问题讨论】:
-
为什么要使用自定义委托,为什么希望它能够工作?
-
@Sweeper 我只是在练习代表......这就是为什么
-
您不能将自定义谓词 type 传递给
List<T>.Find。但“自定义谓词”仅表示包含您自己的逻辑的Predicate<T>类型的实例。
标签: c# lambda delegates anonymous-function predicate