2
입력 컬렉션을 배열로 변환해야하는 몇 가지 확장 메서드를 만들고 있습니다. 절대적으로 필요한 경우에만 입력 복사본을 만들고 싶습니다.배열 인 ICollection에서 .toArray()를 호출해도 참조 또는 복사본이 반환됩니까?
public static ICollection<TSource> ExtMethod<TSource>(this ICollection<TSource> source, Func<TSource, int> predicate)
{
TSource[] converted;
if (source is TSource[])
{
converted = source as TSource[];
}
else {
converted = source.ToArray();
}
}
또는 후드 아래의 체크를 할 toArray 수행하고 내가 만약 내가 정확히 같은 효과를 :
public static ICollection<TSource> ExtMethod<TSource>(this ICollection<TSource> source, Func<TSource, int> predicate)
{
TSource[] converted = source.ToArray();
}
확인하기가 쉽지 않은가요? – Itay
다음은 소스입니다. https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,783a052330e7d48d,references 'Buffer'를 클릭하고 'ToArray'를 클릭하면 생성자와 마지막 ToArray를 통해 거기에서 일어나는 일을 볼 수 있습니다. –