使用这个结构有什么问题吗?

Som*_*ody 1 .net c# winforms

我已经阅读了很多关于使用结构作为数据类型的危险,我想知道这个是否存在任何问题,

List<Summarized> SummarizedList = new List<Summarized>();
    Summarized SumInfo;
    struct Summarized
    {
        public string sBrand;
        public string sModel;
        public string sCustomer;
        public int sline;
        public string sLeader;            
        public int sDesire;
        public int sReal;               
    } 
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用类型SumInfo的通用项列表,它是结构数据类型.每当我需要更新列表中的项目时,我只需执行以下操作:

SumInfo = (Summarized)SummarizedList[CurrentPos];
            SumInfo.sDesire = DesireProd;
            SumInfo.sReal = RealProduced;                
            SummarizedList[CurrentPos] = SumInfo;
Run Code Online (Sandbox Code Playgroud)

其中CurrentPos是我想要更新的项目的位置.

到目前为止一切正常,所以未来可能有任何问题吗?这个结构是可变的吗?

谢谢.

Ree*_*sey 5

到目前为止一切正常,所以未来可能有任何问题吗?这个结构是可变的吗?

是的,这是一个可变的结构.是的,它会起作用.

但是,我认为这个结构应该是一个类.有关原因的详细信息,请参阅在类和结构之间选择.在这种情况下,你违反了3个结果应该始终为真的情况:

  • 它逻辑上表示单个值,类似于基本类型(整数,双精度等).
  • 它的实例大小小于16个字节.
  • 这是不可改变的.

这强烈建议一个类更适合您的类型.它还可以简化您的代码.


顺便说一句 - 旁注,上面的代码中不需要强制转换.你应该能够写:

SumInfo = SummarizedList[CurrentPos];
Run Code Online (Sandbox Code Playgroud)