它';可以在方法内部创建方法

本文关键字:方法 内部 创建 | 更新日期: 2023-09-27 18:27:10

如果不使用NestedClass,如何在方法内部创建方法?

例如,我想调用一个类似ff:的方法

Method1("sample string").Method2(12345).ToString();

我想的方法是:

public string Method1(string text)
{
   string Method2(int num1)
   {
      return text + num1;
   }
   return Method2;
}

public string Method1(string text).Method2(int num1)
{
    Return text + num1;
}

存在这样的东西吗?如果是,那是什么方法?

它';可以在方法内部创建方法

您可以返回Func(一个有返回值的方法)或Action(无返回值)

public Func<int> Example()
{
    return () => 10
}
public Action<int> ExmapleAction()
{
    (i) => Console.WriteLine(i) // doesn't return, but acts on passed value
}

在您的情况下,您可以执行以下操作:

public Func<string, object> Method1(string value) { return (s) => new object(); }

这样称呼它:

Method1("value")("otherValue");

如果你设置了链接方法,那么唯一不需要创建特定类型的方法就是扩展方法一(Steve的答案)

您不能在c#中执行嵌套方法。但是一个扩展方法可以做你想做的事情。

//xxclass
public string Method1(string text)
{
   return text;
}
public static class stringExtension
{
    public static string Method2(this string s, int num1)
    {
       return s + num1;
    }
}

Method1("sample string").Method2(12345).ToString();
public string Method1(string text)
{
    Func<string,string,string> method = (val1,val2) => {return val1 + val2}; 
    return method("hello", "world");
}

如果需要本地功能,请使用代理。如果需要void方法,也可以使用Action,因为Func必须返回一个值。

您似乎正在寻找一个Fluent接口。