我正在Visual Studio 2017中学习c#的一些高级功能。在这里,我试图将函数作为参数传递给另一个函数。
private static void Main(string[] args)
{
var myClass = new MyClass();
myClass.Setup(x =>
{
x.Invitation = "Hello {PersonName}, you are invited to our wedding";
x.PersonName= "John Doe";
});
Console.WriteLine(myClass.Call());
Console.WriteLine("press any key to exit...");
Console.ReadKey();
}
internal class MyClass
{
string msg = "";
public MyClass()
{
msg = "hello";
}
public string Call()
{
return msg;
}
internal void Setup(Func<string, string> p)
{
string Invitation = p("Invitation");
string PersonName = p("PersonName");
msg = Invitation.Replace("{PersonName}", PersonName);
}
}
但是,我收到类似这样的错误
并非所有代码路径都在类型为lambda的表达式中返回值 “功能”
和
“字符串”不包含“ GreetingMessage”的定义,并且不 扩展方法'GreetingMessage'接受类型的第一个参数 可以找到“字符串”(您是否缺少using指令或 程序集参考?)
我不确定这是什么错误,我对此事非常了解。
我也检查了以下链接以找到解决方法,但不确定如何解决。 Not all code paths return a value in lambda expression of type 'System.Func<int>'