控制Struct对象的大小和范围

时间:2012-12-27 20:48:04

标签: c# c#-4.0 struct

我正在构建一个库的设计,因为我不熟悉C#,想要创建一个结构(值类型)并让它在内部管理。当有人为所述结构分配值时,它会(对于此实例)验证值的长度并对值进行一些卫生(即将whitespace转换为underscores等)。< / p>

它控制着我所处的价值。如果它是一个普通的类,我只是将一个事件附加到赋值并执行所有验证,但是因为一个类对于我要创建的对象的目的而言是过度的,我想到了一个struct对象将是最合适的。

结构设计,可能不干净,但我到目前为止:

public struct ST_Keytip
{
    private string _value;

    [DefaultProperty]
    public string FooBar
    {
        get { return this._value; }
        set
        {
            if (len(value) < 1 or len(value) > 3)
            {
                throw new exception("blah blah blah....PUKE!!!!")
            }
            else
            {
                this._value = value;
            }
        }
    }
}

我确定它不是一个干净的C#设计,但它是如果它是一个类对象我会做的。基本上我不需要它实例化(因此我没有使用类),它应该持有一个值。我只是想知道我是否可以为结构附加值验证,如果我可以如何?如果不是,那么拥有一个对其赋值有限制的值类型的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

可变结构是邪恶的。你应该像瘟疫一样避免它们。

作为一项规则,如果有令人信服的理由/需要,并且当您完全了解使用结构的所有后果时,最好只在类上使用结构。

对于你的情况,尽管你的对象很小,但它应该是一个类。