【发布时间】:2018-04-27 08:23:03
【问题描述】:
我想写一个方法,我可以发送任何类型的[]、List<>...等。但是在代码中,当我使用 T 并且我想对输入数组、列表或任何内容进行索引时,错误会显示“无法将 [] 的索引应用于‘T’类型的表达式”。有什么解决方案,或者我必须为数组、列表等编写单独的代码?
public void NormSort<T>(ref T input, int n)
{
for (int i = 0; i < n - 2; i++)
{
for (int j = 0; j < n - 1; j++)
{
if (Comparer<T>.Default.Compare(input[i], input[j]) > 0)
{
Swap<T>(input[i], input[j]);
}
}
}
}
public void Swap<T>(T item1, T item2)
{
var temp = item1;
item1 = item2;
item2 = temp;
}
那么输入[i],输入[j]在哪里,我得到了那个错误。
【问题讨论】:
-
作为参考,它看起来就像你习惯于使用 C/C++ 指针(这段代码散发出从基于指针的代码中提取出来的味道);您在这里尝试做的事情很好地映射到即将到来的
Span<T>机制;您应该能够在大多数数组和连续列表上创建Span<T>,并且它允许就地ref访问数据。不过,这不是今天的选择。