这是具有通用索引器
的类 public class IndexThis<T>
{
T[] MainArr = new T[100];
public IndexThis(params T[] Arrz)
{
for (int i = 0; i < Arrz.Length; i++)
{
MainArr[i] = Arrz[i];
}
}
public T this[int index]
{
get
{
if (MainArr[index] == null) return "myStringHere"; //compile error
return MainArr[index];
}
private set { }
}
}
尝试将其转换为(T)或使用&#34;作为T&#34;仍然给我编译时错误,看来我真的不记得我在这里错过了什么
答案 0 :(得分:4)
T
,因为它目前不受约束,可以是任何东西。索引器需要返回T
,调用代码将需要T
类型的实例。
我们假设您使用的类型......
var foo = new IndexThis<Giraffe>();
您的索引器现在基本上是:
public Giraffe this[int index]
{
get
{
if (MainArr[index] == null) return "myStringHere"; //compile error
return MainArr[index];
}
}
这当然没有意义。
如果您需要返回值,请考虑返回default( T )
。或者,抛出异常。