Лямбда-функции C# создают выделение памяти?C#

Место общения программистов C#
Anonymous
Лямбда-функции C# создают выделение памяти?

Сообщение Anonymous »

Я хотел бы сделать несколько методов, не требующих выделения кучи, для выполнения некоторых операций. Некоторые из этих методов принимают делегат в качестве параметров. Меня беспокоит то, что, если передача лямбда-функции этим методам приведет к выделению кучи. Например, рассмотрим следующий код:

Код: Выделить всё

public SomeItem FindItem(Predicate predicate)
{
// Return something by calling predicate(someItem) multiple times.
}

private void DoSomething()
{
var myItem = FindItem(item => item.IsValid);

// Do something.
}
Учитывая приведенный выше пример кода, вызовет ли вызов DoSomething() какое-либо выделение кучи в текущей версии C# и .NET?
А как насчет альтернатив? Существуют ли типы делегатов или соглашения для лямбда-функций в .NET, которые не требуют выделения кучи? Я читал о предложении ValueAction где-то в .NET Core 2.1, но не знаю, было ли оно действительно реализовано или что-то подобное уже существует в .NET 8.

Подробнее здесь: https://stackoverflow.com/questions/788 ... llocations

Вернуться в «C#»