在C#中更新List中结构的属性
发布时间:2020-12-15 05:40:30 所属栏目:百科 来源:网络整理
导读:我有一个List Cat其中Cat是具有Id和Name的结构. 如何更改ID为7的猫的名称? 我做了(没想到) var myCat = catList.Single(c = c.Id == 7);mycat.Name = "Dr Fluffykins"; 但当然,结构是价值类型.那么是否可以使用这样的技术,或者我是否必须将.Single变为for循
我有一个List< Cat>其中Cat是具有Id和Name的结构.
如何更改ID为7的猫的名称? 我做了(没想到) var myCat = catList.Single(c => c.Id == 7); mycat.Name = "Dr Fluffykins"; 但当然,结构是价值类型.那么是否可以使用这样的技术,或者我是否必须将.Single变为for循环并存储索引以用更新的结构替换它? 解决方法
由于结构是值类型,并且因为值类型被复制,myCat最终会得到列表中cat的副本.您需要对结构本身进行操作,而不是对其进行操作.
此外,只有在结构的单个变量或数组的一部分时,才能直接修改结构的字段. List< T>的索引器返回一个副本,因此C#编译器产生“无法修改值类型”错误. 我知道的唯一解决方案(没有让Cat成为类或re-assigning a modified copy)使catList成为一个数组: var indexOf = catArray .Select((Cat,Index) => new {Cat,Index}) .Single(p => p.Cat.Id == 7).Index; catArray[indexOf].Name = "Dr Fluffykins"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读