Eil*_*lon 17
这当然是可能的.
您可以在其他方法中创建作为函数的委托.这适用于C#2.0:
public void OuterMethod() {
someControl.SomeEvent += delegate(int p1, string p2) {
// this code is inside an anonymous delegate
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于lambdas的新版本:
public void OuterMethod() {
Func<int, string, string> myFunc = (int p1, string p2) => p2.Substring(p1)
}
Run Code Online (Sandbox Code Playgroud)
pri*_*e23 11
你可以在c#7中做到这一点(需要VS 2017)
static void Main(string[] args)
{
int fib0 = 1; //!
int Fib(int n) => (n < 2) ? fib0 : Fib(n - 1) + Fib(n - 2);
Console.WriteLine(Fib(7));
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/local-functions
从C#7.0开始,你可以这样做:
public static void SlimShady()
{
void Hi([CallerMemberName] string name = null)
{
Console.WriteLine($"Hi! My name is {name}");
}
Hi();
}
Run Code Online (Sandbox Code Playgroud)
这被称为本地功能,这正是您所寻找的.