控制Struct对象的大小和范围

Gol*_*hop 1 c# struct c#-4.0

我正在构建一个库的设计,因为我不熟悉C#,想要创建一个结构(值类型)并让它在内部管理.当有人赋值意思表示的结构,它会(此实例)验证该值的长度,做价值的一些卫生(即转whitespaceunderscores,等).

它控制着我所处的价值.如果它是一个普通的类,我只是将一个事件附加到赋值并执行所有验证,但是因为一个类对于我要创建的对象来说是过度的,我认为一个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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*rvy 6

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

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

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