Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制结构对象的大小和范围_C#_C# 4.0_Struct - Fatal编程技术网

C# 控制结构对象的大小和范围

C# 控制结构对象的大小和范围,c#,c#-4.0,struct,C#,C# 4.0,Struct,我正在构建一个库的设计,由于我不熟悉C语言,我想创建一个结构值类型并对其进行内部管理。也就是说,当有人给所述结构赋值时,在这种情况下,它将验证该值的长度,并对该值进行一些处理,如将空格变成下划线等 这是对我错的价值的控制。如果它是一个普通的类,我只会将一个事件附加到赋值并执行所有的验证,但是对于我将要创建的对象来说,一个类可能过于复杂,因此我认为一个struct对象是最合适的 结构设计,可能不干净,但到目前为止我有: 我确信这不是一个干净的C设计,但如果它是一个类对象,我会这么做。基本上我不需要

我正在构建一个库的设计,由于我不熟悉C语言,我想创建一个结构值类型并对其进行内部管理。也就是说,当有人给所述结构赋值时,在这种情况下,它将验证该值的长度,并对该值进行一些处理,如将空格变成下划线等

这是对我错的价值的控制。如果它是一个普通的类,我只会将一个事件附加到赋值并执行所有的验证,但是对于我将要创建的对象来说,一个类可能过于复杂,因此我认为一个struct对象是最合适的

结构设计,可能不干净,但到目前为止我有:
我确信这不是一个干净的C设计,但如果它是一个类对象,我会这么做。基本上我不需要它被实例化,所以我没有使用这个类,它应该有一个值。我只是想知道我是否可以将值验证附加到一个结构,以及我是否可以如何附加值验证?如果不是,那么最好的方法是什么,使一个值类型对其分配的值有限制?

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

通常,只有在有令人信服的理由/需要时,并且当您完全意识到使用结构的所有后果时,才最好在类上使用结构


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

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

通常,只有在有令人信服的理由/需要时,并且当您完全意识到使用结构的所有后果时,才最好在类上使用结构



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

您确实不应该调用属性值。这将导致setter中value关键字的歧义,不是对编译器,而是对代码的读者。symantics现在是我最不关心的。这不是一个好的心态。他们应该是最重要的。如果你的汽油用完了,你会在任何加油站停下来加油还是只停在E85加油站?我想你会不惜一切代价给你的车加油,但也许不会。我是说这个类比是不恰当的。使用名为value的属性可能产生的问题可能比根本不使用任何自定义类而只使用所有字符串对象的问题更重要。这里糟糕的设计带来的负面影响并没有那么大,相比之下,这个问题就显得微不足道了,这就是我提到它的原因。你真的不应该调用属性值。这将导致setter中value关键字的歧义,不是对编译器,而是对代码的读者。symantics现在是我最不关心的。这不是一个好的心态。他们应该是最重要的。如果你的汽油用完了,你会在任何加油站停下来加油还是只停在E85加油站?我想你会不惜一切代价给你的车加油,但也许不会。我是说这个类比是不恰当的。使用名为value的属性可能产生的问题可能比根本不使用任何自定义类而只使用所有字符串对象的问题更重要。这里糟糕的设计带来的负面影响并没有那么大,相比之下,这个问题就显得微不足道了,这就是我提到它的原因。问题是我个人觉得一个带有默认属性的类是对编码空间的浪费。我需要有一个对象,我可以把它持有的值长度限制。有点像将变量定义为char[3],而不是char或string。有什么建议吗?此外,此值类型将被多次使用。我可以创建类,但是如上所述,它实际上有一个私有变量,属性是默认值。我不希望它被实例化,也不希望它是静态的。@GoldBishop,我告诉你,你会引起更多的问题,然后你会用你的代码而不是类来解决。如果您认为创建自定义类型是不值得的,那么就不要使用任何自定义类型,只使用经过或未经过清理的字符串对象。如果你认为可读性值得定制类型的微小开销,那么创建你的类。它是概念设计…不是第二个pt的实际实现,这是我倾向于做更多研究的地方。如果我有一个臭名昭著的Person对象,它有多个属性,但我有一个压缩类型,可以在多个地方使用。我认为只定义一个结构或类型,并在所述对象中执行限制会更容易。但我似乎回到了班级发展;问题是,我个人觉得一个具有默认属性的类是对编码空间的浪费。我需要有一个对象,我可以把它持有的值长度限制。索塔
比如将变量定义为char[3],而不是char或string。有什么建议吗?此外,此值类型将被多次使用。我可以创建类,但是如上所述,它实际上有一个私有变量,属性是默认值。我不希望它被实例化,也不希望它是静态的。@GoldBishop,我告诉你,你会引起更多的问题,然后你会用你的代码而不是类来解决。如果您认为创建自定义类型是不值得的,那么就不要使用任何自定义类型,只使用经过或未经过清理的字符串对象。如果你认为可读性值得定制类型的微小开销,那么创建你的类。它是概念设计…不是第二个pt的实际实现,这是我倾向于做更多研究的地方。如果我有一个臭名昭著的Person对象,它有多个属性,但我有一个压缩类型,可以在多个地方使用。我认为只定义一个结构或类型,并在所述对象中执行限制会更容易。但我似乎回到了班级发展;
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;
            }
        }
    }
}