Re: Могут ли локальные функции делать замыкание?
От: _NN_ www.nemerleweb.com
Дата: 08.12.19 08:21
Оценка: 2 (1)
Здравствуйте, 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;
    }
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.