【发布时间】:2014-04-26 10:57:24
【问题描述】:
我正在创建一个包含我用来缓存计算值的私有数组的类。我想将元素的数量限制为最大 256,因为这是使用 byte 索引的索引器可以访问的最大元素数量;我还需要这个数字相当小,所以这行得通。
但是!它必须作为构造函数中的参数传递,因为客户端代码将确定它的大小。但是,如果我将 byte 作为参数,则最大值为 255;我了解这是为什么以及如何发生,但我无法找出最佳解决方法。
public class Spritesheet
{
private Rectangle[] _values;
public Spritesheet(byte spriteCount)
{
_values = new Rectangle[spriteCount]; // But this needs to store 256 values at most...
}
}
我可以将它设为 byte?,如果它为 null,则使用 256 个元素,但这似乎是任意的(尽管它肯定会起作用)。我可以看到的另一种选择是使用 int 并以某种方式限制值,但将其公开为 int 可能会给用户错误的代码意图。
编辑:将“spritesToIndex”更改为“spriteCount”以使其更清晰。值得一提的是,这是我正在实现的接口:
public interface ISpritesheet
{
Texture2D Texture { get; }
byte Sprites { get; }
byte SpritesPerRow { get; }
Point Size { get; }
Point Spacing { get; }
Point Offset { get; }
Rectangle this[byte index] { get; }
}
【问题讨论】: