如何创建一个集合,数组的值只有0,1,2个数字。 我有一个创建数学向量的任务,这些组件仅来自集合{0,1,2}。所以我需要一些只能包含0,1,2个值的数据结构。如何实现这样的集合或对类字段施加限制?请帮助我。
public class MyClass
{
// This type supposed to contains only values from the set {0 ,1 , 2}.
Type components;
}
答案 0 :(得分:2)
只需使用枚举:
enum JustZeroOneTwo {
Zero = 0,
One = 1,
Two = 2
}
您甚至可以使用基础整数而不是标识符:
public MyClass(int zeroonetwo) {
components = zeroonetwo;
}
请注意,使用此功能时,您必须手动检查该号码是否在您的设置中。直接传递类型JustZeroOneTwo
的值可以消除此边界检查:
public MyClass(JustZeroOneTwo jzot) {
components = jzot;
}
答案 1 :(得分:1)
下面..
public enum MyClassDomain{One = 1, Two = 2, Three = 3}
public class MyClass
{
private MyClassDomain intVal { get; set;)
private MyClass() {}
public static MyClass Make(int value) // <--- Factory to create instance
{ return new MyClass {Component = value}; }
public int Component
{
get { return (int) intval; }
[private] set // <-- make this prIvate to make immutable
{
if(value < 1 || value > 3)
throw new ArgumentException
("Value out of range.");
intVal = (MyClassDomain) value;
}
}