public class MyClass<T>
{
public T this[int index]
{
get
{
...
}
set
{
...
}
}
public void MyMethod<T>()
{
int middleIndex = ...;
T value = this[middleIndex ];
...
}
}
由于MyMethod()中的语句,代码将无法编译。还有另一种调用索引器的方法吗?
编辑:修改了MyMethod()
Edit2:编译错误
Error 6 Cannot implicitly convert type 'T [C:\MyClass.cs]' to 'T [C:\MyClass.cs]'
感谢。
答案 0 :(得分:3)
对我来说很好:
public class MyClass<T>
{
public T this[int index]
{
get
{
return default(T);
}
set
{
}
}
public void MyMethod(int index)
{
T value = this[index];
}
}
不可否认,我必须将index
参数引入MyMethod
,但我假设你想要从某处获取索引 ...如果那不是什么你的意思是,请澄清。
答案 1 :(得分:2)
这对我来说很好用:
public class MyClass<T>
{
List<T> _items = new List<T>();
public T this[int index]
{
get
{
return _items[index];
}
}
public void MyMethod()
{
T value = this[2];
}
}
答案 2 :(得分:1)
调用索引器很好,但它不知道你想要哪个索引。如果你将索引作为MyMethod的参数,它将正常工作。
如果您正在尝试获取当前索引或其他内容,则需要存储私有变量,将其连接到索引器中并访问它。
您编辑的代码编译得很好......
public class MyClass<T>
{
public T this[int index]
{
get
{
...
}
set
{
...
}
}
public void MyMethod()
{
int middleIndex = ...;
T value = this[middleIndex ];
...
}
}
答案 3 :(得分:0)
您没有将索引的值传入方法MyMethod
- 您可以发布更多代码吗?看起来有些东西不见了......
答案 4 :(得分:0)
您的违规代码在这里:
public void MyMethod<T>()
您的班级MyClass<T>
已有一个通用类型参数T,因此<T>
上的通用MyMethod
是不必要的