在structs 的值的值是一个常见的任务是一个常见的任务。在处理结构列表时,尝试更改单个元素的价值时可能会出现特定问题。本文探讨了此问题背后的根本原因,并提供了潜在的解决方案。
在使用诸如structs之类的值类型时,每个值类型变量或参考代表结构的独特实例。将一个从列表元素分配到新变量的值,例如struct obitem = myList [1];,创建一个具有复制成员的新实例。对obitem进行的任何修改都不会影响myList中的原始元素。此行为源于价值类型的语义。当将值类型分配给新变量或将其作为参数传递时,会创建一个新实例并复制值。这与参考类型(例如类)形成鲜明对比的是,对参考的修改将影响原始对象。解决结构列表中修改单个元素的问题,一种方法是定义构造构造并使用该接口访问结构的接口。这允许通过接口参考修改实际结构,该界面引用指向盒装对象。
; temp.name =“ gishu”; foreach(mystruct s in dobist)//“ abc”,“ def” { Console.Writeline(s.Name); } iMistsuctModifier temp2 = obsist [1]作为immesstructModifier; temp2.name =“现在gishu”; foreach(mystruct s in dobist)//“ ABC”,“现在gishu” { Console.Writeline(s.Name); }考虑使用structs vets classe classs存储在集合中的权衡很重要。结构可提供性能优势,并在需要不变性或少量记忆足迹时优先。但是,如果列表中的修改元素是必需的,则类可能是一个更合适的选项。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3