我有一个包含以下两个字段的类:
private readonly Memory<byte> data;
public Memory<byte> Reserved1 => data.Slice(0, 2);ReSharper向我发出警告,并使用Slice:值类型的只读字段调用了不纯方法
从数据声明中删除readonly可以修复警告,但我想了解在这种情况下,此警告是否为假阳性,或者警告是否有效,我应该避免设置data readonly。有什么建议吗?
发布于 2019-03-10 05:02:05
如果我正确理解了这一点
无论如何,Memory<T>是一个只读结构,它的字段是不可变的。虽然它所指向的内存不是。
切片上的突变将反映在它在data中指向的内存中,这正是我假设您想要的。在这种情况下,可以忽略警告,使用
// ReSharper disable once ImpureMethodCallOnReadonlyValueField乔恩·斯基特回答了一个比较著名的问题,埃里克·利珀特谈到了不纯的方法及其对结构的影响。
https://stackoverflow.com/questions/55084108
复制相似问题