c# - 在 C# 中为可空结构的成员赋值
问题描述
在 C# 中,我有一个这样的结构:
public struct Slab
{ public float[] sizeM;
public string textureSrc;
//more members, not relevant here...
}
还有一个是这样的:
public struct Tombstone
{ public Slab mainSlab;
public Slab? basing;
//more...
}
现在,我想修改基础成员:
uiState[0].stone.basing.Value.sizeM[2] = Int32.Parse(breadthField.Value) / 100.0f;
uiState[0].stone.basing.Value.textureSrc = fileName;
(uiState[0].stone
是类型Tombstone
)
这两个调用中的第一个可以正常工作,因为我只是在更改数组的成员basing
,而不是数组本身。然而,第二个抱怨:
Cannot modify the return value of 'Slab?.Value' because it is not a variable
如果我对mainSlab
不可为空的情况执行相同操作,它会起作用。有没有办法做到这一点而不将整个复制basing
到局部变量中进行更改?
解决方案
有没有办法在不将整个基础复制到局部变量进行更改的情况下做到这一点?
不,因为Nullable<T>
不提供对基础值字段的直接访问。您不能“就地”修改它。
当你使用可变结构时,会有各种各样的小问题。我强烈建议您尽可能使用类或不可变结构,以避免这些极端情况。
推荐阅读
- excel - 无法使用电源自动更新一个特定的 Excel 字段
- r - R中的ggplot和图例操作
- c++ - cout << " \n"[i == n - 1]; 工作?
- java - 如何确定为什么从 AVSC 文件生成的 POJO 的 getter 和 setter 不存在?
- r - 获取 RSConnect 引脚的时间戳
- android - 在下载文件夹中下载视频 Android Q
- verilog - 尝试用门级代码模拟 JK-FF
- browser - 必须有哪些选项来确定用户使用的是平板电脑还是说它是 Chrome 的浏览器,而实际上它是另一个浏览器 (Vivaldi)
- javascript - 如何让我的 fetch 调用返回相同位置/尺寸的照片?
- odoo - QWeb 报告呈现为 PDF 的问题 - 样式未得到