Каков срок жизни делегата, созданного лямбда-выражением в C #?

Лямбды хороши, так как предлагают краткость и локальность и дополнительную форму инкапсуляции . Вместо того, чтобы писать функции, которые используются только один раз, вы можете использовать лямбда.

Интересно, как они работают, я интуитивно решил, что они , вероятно, создаются только один раз . Это вдохновило меня на создание решения, которое позволяет ограничивать область действия члена класса за пределами частного одной конкретной областью, используя лямбда в качестве идентификатора области, в которой он был создан.

Эта реализация работает , хотя, возможно, излишне (все еще исследую), доказывая правильность моего предположения.

Небольшой пример:

class SomeClass
{
    public void Bleh()
    {
        Action action = () => {};
    }

    public void CallBleh()
    {
        Bleh();  // `action` == {Method = {Void b__0()}}
        Bleh();  // `action` still == {Method = {Void b__0()}}
    }
}

Будет ли лямбда когда-либо возвращать новый экземпляр, или она всегда будет неизменной?

43
задан Community 23 May 2017 в 11:53
поделиться