到目前为止,我一直能够从该网站上的现有帖子中获得答案,但今天我有一个问题似乎之前没有人问过。
它关于以下代码:
class Board<T>
{
private T[,] board;
public T[,] BoardArray
{
get { return (T[,])board.Clone(); }
}
public T this[int y, int x]
{
get { return board[y, x]; }
set { board[y, x] = value; }
}
public Board()
{
board = new T[8, 8];
}
public void AssignToBoard()
{
board[1, 2] = 3;
this[1, 2] = 3;
}
}
问题是方法中的两行代码都会产生相同的编译时错误。我知道为什么会抛出错误,但我不知道一个干净的解决方法。这是错误:
Error 1 Cannot implicitly convert type 'int' to 'T' C:\Users\Peter\Desktop\Dropbox\ReversieAI\ReversieAI\ReversieAI\Map.cs 31 18 ReversieAI
我能够编译我的代码的唯一方法是将这些行更改为:
board[1, 2] = (T)(object)3;
this[1, 2] = (T)(object)3;
尽管它有效,但它仍然是一个肮脏的解决方案。你们中的任何人都认识到这个问题并且可以帮助我/分享任何想法吗?
在此先感谢,彼得
编辑:我通过更改架构中删除类的通用部分的某些内容找到了解决方案。感谢您的所有反馈。对此,我真的非常感激。