创建类哪些组件只能从集合{0,1,2}中获取值

时间:2016-08-04 22:45:13

标签: c#

如何创建一个集合,数组的值只有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;
}

2 个答案:

答案 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;
        }
}