它';可以在方法内部创建方法
本文关键字:方法 内部 创建 | 更新日期: 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接口。