Kev*_*aja 3 javascript c# delegates closures function
考虑以下简单的.js代码:
const createCounter = () => {
let value = 0;
return {
increment: () => { value += 1 },
decrement: () => { value -= 1 },
logValue: () => { console.log(value); }
}
}
Run Code Online (Sandbox Code Playgroud)
//用法
const { increment, decrement, logValue } = createCounter();
Run Code Online (Sandbox Code Playgroud)
我非常确定c#支持一流的功能,请注意,我不想使用类来重新制作上面的代码。什么是C#中的等效闭包?
我做了这个:
public Func<WhatType?> CreateCounter = () => {
var value = 0;
return what?
}
Run Code Online (Sandbox Code Playgroud)
您可以混合使用ValueTuples和lambda表达式。
private static (Action increment, Action decrement, Action logValue) CreateCounter()
{
var value = 0;
return
(
() => value += 1,
() => value -= 1,
() => Console.WriteLine(value)
);
}
Run Code Online (Sandbox Code Playgroud)
用法
var (increment, decrement, logValue) = CreateCounter();
increment();
increment();
decrement();
logValue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |