我正在构建一个库的设计,因为我不熟悉C#,所以我想创建一个结构(值类型)并在内部对其进行管理。这意味着当有人给这个结构赋值时,它将(在这个实例中)验证值的长度,并对值进行一些清理(例如,将whitespace
转换为underscores
,等等)。
它是对价值的控制,这是我忽略的。如果它是一个普通的类,我只会将一个事件附加到赋值中并执行所有的验证,但是对于我将要创建的对象来说,由于一个类可能会被过度杀伤力,我认为struct
对象将是最合适的。
Struct Design,可能不是很干净,但我到目前为止:
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#设计,但如果它是一个类对象,我就会这么做。基本上,我不需要实例化它(这就是为什么我不使用class),它应该包含一个值。我只想知道我是否可以将值验证附加到一个结构,如果可以,我如何?如果没有,让值类型在赋值时有限制的最佳方法是什么?
发布于 2012-12-28 04:51:41
可变结构是邪恶的。你应该像躲避瘟疫一样避开他们。
作为一条规则,最好只在有令人信服的原因/需要这样做的情况下,以及当您充分意识到使用结构的所有后果时,才使用结构而不是类。
对于您的情况,尽管您的对象很小,但它应该是一个类。
https://stackoverflow.com/questions/14061106
复制相似问题