首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Memory切片不纯

System.Memory切片不纯
EN

Stack Overflow用户
提问于 2019-03-10 03:13:40
回答 1查看 85关注 0票数 2

我有一个包含以下两个字段的类:

代码语言:javascript
复制
private readonly Memory<byte> data;
public Memory<byte> Reserved1 => data.Slice(0, 2);

ReSharper向我发出警告,并使用Slice:值类型的只读字段调用了不纯方法

从数据声明中删除readonly可以修复警告,但我想了解在这种情况下,此警告是否为假阳性,或者警告是否有效,我应该避免设置data readonly。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-03-10 05:02:05

如果我正确理解了这一点

无论如何,Memory<T>是一个只读结构,它的字段是不可变的。虽然它所指向的内存不是。

切片上的突变将反映在它在data中指向的内存中,这正是我假设您想要的。在这种情况下,可以忽略警告,使用

代码语言:javascript
复制
 // ReSharper disable once ImpureMethodCallOnReadonlyValueField

乔恩·斯基特回答了一个比较著名的问题,埃里克·利珀特谈到了不纯的方法及其对结构的影响。

Impure method is called for readonly field

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55084108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档