我正在构建一个库的设计,因为我不熟悉C#,想要创建一个结构(值类型)并让它在内部管理.当有人赋值意思表示的结构,它会(此实例)验证该值的长度,做价值的一些卫生(即转whitespace成underscores,等).
它控制着我所处的价值.如果它是一个普通的类,我只是将一个事件附加到赋值并执行所有验证,但是因为一个类对于我要创建的对象来说是过度的,我认为一个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#设计,但如果它是一个类对象我会做什么.基本上我不需要它实例化(因此我没有使用类),它应该持有一个值.我只是想知道我是否可以为结构附加值验证,如果我可以如何?如果不是,那么拥有一个对其赋值有限制的值类型的最佳方法是什么?
可变结构是邪恶的.你应该像瘟疫一样避免它们.
作为一项规则,如果有令人信服的理由/需要这样做,并且当您完全了解使用结构的所有后果时,最好只在类上使用结构.
对于你的情况,尽管你的对象很小,它应该是一个类.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |