Лямбда-функции 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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