T слишком обобщенно c в этом случае, поэтому Console.WriteLine
не знает, как с этим справиться, поскольку выбранная перегрузка Console.WriteLine
зависит от типа T.
T : class
будет использовать перегрузку, отличную от T : struct
.
В этом случае есть несколько хитростей:
- Будьте более явными:
private void Print<T>(T[] arr) =>
Array.ForEach(arr, x=> Console.WriteLine(x));
Использовать ограничение:
private void Print<T>(T[] arr) where T : class =>
Array.ForEach(arr, Console.WriteLine);