今まで、このサイトの既存の投稿から常に回答を得ることができましたが、今日は誰も質問していないように思われる質問があります。
次のコードについてです。
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;
機能しますが、それでもまだ汚いソリューションです。問題を認識していて、私を助けたり、考えを共有したりできる人はいますか?
前もって感謝します、ピーター
編集:クラスの一般的な部分を削除するアーキテクチャで何かを変更することで解決策を見つけました。フィードバックをお寄せいただきありがとうございます。ほんとうにありがとう。