有没有办法(可能是一个肮脏的黑客)来创建一个只使用指定数组而不是复制它的 ImmutableArray?
我有一个我知道不会更改的数组,我想创建一个 ImmutableArray 以允许客户端安全地访问我的数组。
查看 ImmutableArray的源代码,我发现 Create 方法无济于事:
public static ImmutableArray<T> Create<T>(params T[] items)
{
if (items == null)
{
return Create<T>();
}
// 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 上有一个关于这个特性的请求,它也提供了最快的 hack 使用:https ://github.com/dotnet/corefx/issues/28064