我正在构建一个库的设计,因为我不熟悉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#设计,但它是如果它是一个类对象我会做的。基本上我不需要它实例化(因此我没有使用类),它应该持有一个值。我只是想知道我是否可以为结构附加值验证,如果我可以如何?如果不是,那么拥有一个对其赋值有限制的值类型的最佳方法是什么?
答案 0 :(得分:6)
可变结构是邪恶的。你应该像瘟疫一样避免它们。
作为一项规则,如果有令人信服的理由/需要,并且当您完全了解使用结构的所有后果时,最好只在类上使用结构。
对于你的情况,尽管你的对象很小,但它应该是一个类。