不是按照您要求的方式,但是您可以使用一些旧的 C++ 技巧来生成静态指定特征的类:
abstract class Integer
{
public abstract int Get { get; }
}
public class One : Integer { public override int Get { return 1; } } }
public class Two : Integer { public override int Get { return 2; } } }
public class Three : Integer { public override int Get { return 3; } } }
public class FixedStorage<T, N> where N : Integer, new()
{
T[] storage;
public FixedStorage()
{
storage = new T[new N().Get];
}
public T Get(int i)
{
return storage[i];
}
}
使用它,您可以定义空间类:
public class Vector3 : FixedStorage<float, Three> {}
public class Vector2 : FixedStorage<float, Two> {}
public class GridCell : FixedStorage<int, Two> {}
我在一个有很多子类的库中使用这种技术,其中添加一个新的数据成员需要很多样板文件。