如何在不使用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;
}
这样的东西存在吗?如果是这样的那种方法是什么?
答案 0 :(得分:2)
您可以返回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的回答)
答案 1 :(得分:2)
您无法在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();
答案 2 :(得分:1)
public string Method1(string text)
{
Func<string,string,string> method = (val1,val2) => {return val1 + val2};
return method("hello", "world");
}
如果您需要本地功能,请使用委托。如果需要void方法,也可以使用Action,因为Func必须返回一个值。
答案 3 :(得分:0)
您似乎正在寻找Fluent Interface。