Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 使答案成为类a结构?_C#_Class_Struct - Fatal编程技术网

C# 使答案成为类a结构?

C# 使答案成为类a结构?,c#,class,struct,C#,Class,Struct,通常都是玩游戏,但为了教育目的,我绕道做了一个问答应用程序 无论如何,我有一个拥有众多成员的问题类:问题本身,问题的答案,,一系列可能的答案等等。毫无疑问,这应该是一个类 然而,我的answer类只包含一个字符串、一个枚举和一个整数id号,如下所示: public class Answer { public string Answer { get { return answer;} private set { answer = value; } } public Answer_

通常都是玩游戏,但为了教育目的,我绕道做了一个问答应用程序

无论如何,我有一个拥有众多成员的问题类:问题本身,问题的答案,,一系列可能的答案等等。毫无疑问,这应该是一个类

然而,我的answer类只包含一个字符串、一个枚举和一个整数id号,如下所示:

public class Answer
{
    public string Answer { get { return answer;} private set { answer = value; } } 
    public Answer_Category = Some_Value; // The enum.
    public int ID { get { return id; } private set { return id; } }

    private string answer;
    private int id;
}
好的,它有两个字符串,而且这个向量已经被去掉了

那么我应该把它做成一个结构吗?我这样问是因为它似乎可以与将向量作为一个结构相比较,毕竟它是一个如此小的数据结构

作为一个问答应用程序,答案类/结构自然会成为许多搜索调用的主题


在我看来,这应该是一个结构-仅仅是因为结构的大小,已经有一段时间没有使用C了,不过只是想澄清一下。

这个决定归结为您想要的是值类型还是引用类型。换句话说,您希望赋值运算符是什么意思?如果希望赋值复制值,请使用结构。如果您希望赋值取另一个引用e,请使用类。

结构有两种主要用法:用于希望方便地在自变量集合(如点坐标)周围移动的情况,或者在身份不重要的情况下(例如,
Decimal
DateTime
)经常使用小型不可变对象。由于结构类型的变量只包含变量的聚合,因此用于此目的的结构应该只将其内容公开为公共字段。这样做将清楚地表明,任何可能适用于结构成员的不变量都将由创建结构的代码负责。例如,如果有一个结构
MinMax
包含
int
成员
Minimum
Maximum
,那么为这些成员使用公开的公共字段将清楚地表明,结构本身并不保证
Maximum>=Minimum
。返回这样一个结构的方法可以保证它不会返回
最大值<最小值
,但是接收结构并希望
最大值>=最小值
的方法必须自己检查这些字段。另一方面,希望在结构中设置这些值的代码将能够以任何方便的顺序设置它们,而不必担心结构会抛出异常,因为
最小值设置为高于
最大值


MSDN指南假定任何结构的目的都是像对象一样工作。由于分段可变结构的行为与对象不同,因此将用作对象的结构不应是分段可变的。另一方面,变量的聚合本身也是有用的;在需要变量聚合的情况下,应该使用结构,但应该尽可能清楚地表明结构是变量聚合而不是对象。

我个人认为实体应该始终是一个类,除非有真正的理由让它们成为结构(我在这里没有看到)。我很想看看答案。您可能想添加更多关于实体如何在代码中使用的信息……您的决定的一个很好的起点是关于structs@fuchs777的microsoft指南。我已经详细介绍了MS对structs的看法,其中充满了矛盾,例如,Vector2/Vector3是Xna中的structs,即矩形结构(再一次XNA)。谢谢你的回答:)是的,我得到了价值和参考的东西。我想我在一篇文章中说得太深了,它应该在对象不可变、数据类型小等情况下使用。鉴于这是一个问答应用程序,会有很多加载问题和答案供比较。类绝对是这种类型的方式。再次感谢你的鼓励:P