gpt4 book ai didi

c# - 帮助消除 friend /内部人员

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:28 24 4
gpt4 key购买 nike

我经常看到人们说“如果你需要 friend/internal 那么你的设计是错误的”,有人能告诉我如何重新设计以下代码以消除 ChessPiece.Location 中的 internal 吗?

目前使用它以便将棋子添加到 ChessBoard 设置 ChessPiece.Location 属性以匹配,显然将其公开会比内部更糟糕并且将其设为私有(private)会阻止 ChessBoard 更新位置。感谢您提供任何见解。

public struct Coord
{
public Coord(int x, int y) { this.X = x; this.Y = y; }
public int X { get; private set; }
public int Y { get; private set; }
}

public class ChessBoard
{
public ChessBoard() { /*[...]*/ }
public ChessPiece this[int x, int y]
{
get
{
// Return ChessPiece at this position (or null)
}
set
{
// Add ChessPiece at this position and set its Location property
}
}

public class ChessPiece
{
public ChessPiece() { /*[...]*/ }
public Coord Location { get; internal set; }
}

最佳答案

我个人认为 ChessPiece 知道它的位置很奇怪 - 这似乎是 ChessBoard 的功能,而不是棋子本身。 (棋子被拿下 table 后在什么位置?正常情况下还是有效棋子...)

我会将位置/移动逻辑放入棋盘中,并存储一个 Dictionary<ChessPiece, Coord>每个有效棋子的位置。

关于c# - 帮助消除 friend /内部人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1285599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com