如何在c#

时间:2018-10-26 13:42:40

标签: c# visual-studio-2017

我正在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>'

0 个答案:

没有答案