返回-1。
这不仅仅是 C++ 约定,它在 .NET Framework 中也很常见 - 例如,String.IndexOf 之类的方法或 SelectedIndex 之类的属性用于表示列表的控件。
编辑
只是为了详细说明,在您的问题中的三个选项(异常,返回 -1,输出参数)中,返回 -1 是要走的路。例外是针对特殊情况,Microsoft 编码指南建议尽可能避免使用 out 参数。
在我看来,返回 -1(假设它总是无效值)、返回可为空的 int 或返回 Tile 对象都是可接受的解决方案,您应该选择与应用程序的其余部分最一致的方案。我无法想象任何开发人员都会在以下任何方面遇到丝毫困难:
int tileNumber = GetTile(x,y);
if (tileNumber != -1)
{
... use tileNumber ...
}
int? result = GetTile(x,y);
if (result.HasValue)
{
int tileNumber = result.Value;
... use tileNumber ...
}
Tile tile = GetTile(x,y);
if (tile != null)
{
... use tile ...
}
我不确定我是否理解 Peter Ruderman 关于使用 int 的评论“比返回可空类型更有效”。我原以为任何差异都可以忽略不计。