Здравствуйте, Passerby, Вы писали:
P>Могут ли локальные функции делать замыкание? И если могут, то как?
Также как и лямбды.
https://sharplab.io/#v2:D4AQTAjAsAUCDMACciDCiDetE+UglgHYAuiAsgBRGkCGAlJtrs9YgGYUMbIDsiNiANSIIAbkQBfJsxmJpMkHw51R8qTAlA==
using System;
public class C {
public int M(int a) {
int f() { return a + 1; }
return f();
}
}
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
public class C
{
[StructLayout(LayoutKind.Auto)]
[CompilerGenerated]
private struct <>c__DisplayClass0_0
{
public int a;
}
public int M(int a)
{
<>c__DisplayClass0_0 <>c__DisplayClass0_ = default(<>c__DisplayClass0_0);
<>c__DisplayClass0_.a = a;
return <M>g__f|0_0(ref <>c__DisplayClass0_);
}
[CompilerGenerated]
private static int <M>g__f|0_0(ref <>c__DisplayClass0_0 P_0)
{
return P_0.a + 1;
}
}