如何解决C#中的高阶函数返回void
我在理解C#中的HOF时遇到了一些问题。我希望我的DoSomething函数将函数作为参数返回 void 并接收两个字符串。由于编译器抱怨,我无法将第一个通用参数设置为void。这给了我一个错误。
在C#中执行此操作的正确语法是什么?
using System.IO;
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello,World!");
DoSomething((v1,v2) => Console.WriteLine(v1,v2));
}
private static void DoSomething(Func<string,string,string> f){
f("1","2");
}
}
解决方法
基本上使用Action<string,string>
代替Func<string,string,string>
。 Action
个委托声明为返回void
; Func
代表被声明返回“最终类型参数”。
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello,World!");
DoSomething((v1,v2) => Console.WriteLine(v1,v2));
}
private static void DoSomething(Action<string,string> action)
{
action("1","2");
}
}
请注意,这里的结果只是“ 1”,因为它被解释为格式字符串。如果您改用action("Value here: '{0}'","some-value");
,则会得到Value here: 'some-value'
的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。