C#Singleton实例返回null
我正在用C#开发一个国际象棋应用程序 我已经将ChessBoard实现为一个单例类,其中包含棋子的定义。我可以从不同的类访问ChessBoard实例。我甚至创建了一个测试类,看看是否可以访问ChessBoard实例,这证明是成功的 但是,在我的ROOK类中,当我尝试访问ChessBoard实例时,它返回null。以下是棋盘类的代码:C#Singleton实例返回null,c#,oop,singleton,C#,Oop,Singleton,我正在用C#开发一个国际象棋应用程序 我已经将ChessBoard实现为一个单例类,其中包含棋子的定义。我可以从不同的类访问ChessBoard实例。我甚至创建了一个测试类,看看是否可以访问ChessBoard实例,这证明是成功的 但是,在我的ROOK类中,当我尝试访问ChessBoard实例时,它返回null。以下是棋盘类的代码: public sealed class ChessBoard { static readonly ChessBoard instance = new Che
public sealed class ChessBoard
{
static readonly ChessBoard instance = new ChessBoard();
static ChessBoard()
{ }
ChessBoard()
{ }
public static ChessBoard Instance
{
get
{
return instance;
}
}
/* And some other methods and properties */
}
但是当我从ROOK类调用ChessBoard实例时,它返回null。这是ROOK课程:
public class ROOK : IPiece
{
public int posx, posy;
public int side;
public List<Position> PossibleMoves = new List<Position>();
public ROOK(int color, int x, int y)
{
posx = x;
posy = y;
side = color;
UpdateMoveList();
}
public bool IsInLimits(int x, int y)
{ }
public void UpdateMoveList()
{
ChessBoard boardinstance = ChessBoard.Instance;
if (boardinstance == null) { MessageBox.Show("NULL"); }
else
{ }
}
}
如前所述,只有在ROOK类中,ChessBoard实例才会返回null。在其他类中,它不返回null。有什么建议吗?我真的不知道你为什么要把棋盘设计成单人棋盘。很明显,你只想要一个,但是没有必要这样强迫你。此外,一辆车也可以是一辆车。这给人的印象是,你有一个骑士,一个棋子和一辆车!!!!!交叉检查可能是另一个
棋盘类。@SriramSakthivel不可能,因为我只有一个棋盘class@Magus我是C#中OOP的新手,在很多地方都看到它是作为单例实现的。我知道这不是必须的,但我正在考虑处理ChessBoard类中的所有状态检查和函数。并且做一个虽然主函数中的循环一直运行到它的draw或checkmate,但我的观点是,如果您没有一个非常特定的用例,例如需要保持打开的文件流,则不应该使用单例。我和许多其他人都会说,即使这样,你也应该尝试找到另一种方式。
public interface IPiece
{
IsInLimits(int x, int y);
void UpdateMoveList();
}