Создать ImmutableArray без копированияC#

Место общения программистов C#
Anonymous
Создать ImmutableArray без копирования

Сообщение Anonymous »

Есть ли какой-нибудь способ (возможно, грязный хак) создать ImmutableArray, который будет просто использовать указанный массив вместо его копирования?
У меня есть массив, который, как я знаю, выиграл не изменится, и я хочу создать ImmutableArray, чтобы клиенты могли безопасно получать доступ к моему массиву.
Глядя на исходный код ImmutableArray, я вижу, что метод Create не поможет:
Глядя на исходный код ImmutableArray, я вижу, что метод Create не поможет:
р>

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

public static ImmutableArray Create(params T[] items)
{
if (items == null)
{
return Create();
}

// We can't trust that the array passed in will never be mutated by the caller.
// The caller may have passed in an array explicitly (not relying on compiler params keyword)
// and could then change the array after the call, thereby violating the immutable
// guarantee provided by this struct. So we always copy the array to ensure it won't ever change.
return CreateDefensiveCopy(items);
}
Изменить: на GitHub есть запрос именно на эту функцию, которая также дает самый быстрый способ взлома: https://github.com/dotnet/corefx/issues/28064
п>

Подробнее здесь: https://stackoverflow.com/questions/513 ... ut-copying

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