1

我正在构建一个库的设计,并且由于我不熟悉 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;
            }
        }
    }
}

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

4

1 回答 1

6

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

通常,如果有令人信服的理由/需要这样做,并且您完全了解使用结构的所有后果,最好只在类上使用结构。

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

于 2012-12-27T20:51:41.413 回答