首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >控制Struct对象的大小和范围

控制Struct对象的大小和范围
EN

Stack Overflow用户
提问于 2012-12-28 04:48:04
回答 1查看 201关注 0票数 1

我正在构建一个库的设计,因为我不熟悉C#,所以我想创建一个结构(值类型)并在内部对其进行管理。这意味着当有人给这个结构赋值时,它将(在这个实例中)验证值的长度,并对值进行一些清理(例如,将whitespace转换为underscores,等等)。

它是对价值的控制,这是我忽略的。如果它是一个普通的类,我只会将一个事件附加到赋值中并执行所有的验证,但是对于我将要创建的对象来说,由于一个类可能会被过度杀伤力,我认为struct对象将是最合适的。

Struct Design,可能不是很干净,但我到目前为止:

代码语言:javascript
运行
复制
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),它应该包含一个值。我只想知道我是否可以将值验证附加到一个结构,如果可以,我如何?如果没有,让值类型在赋值时有限制的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 04:51:41

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

作为一条规则,最好只在有令人信服的原因/需要这样做的情况下,以及当您充分意识到使用结构的所有后果时,才使用结构而不是类。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14061106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档