声明为字段的 ValueTuple 类型可以是可变的:
class Foo {
(int, int) bar = (0, 1);
}
或只读:
class Foo {
readonly (int, int) bar = (0, 1);
}
这种(im)可变性适用于每个成员。我希望它也可以扩展到 const 声明:
class Foo {
const (int, int) bar = (0, 1);
}
但是这个语句不编译。在某些情况下它是一个不受欢迎的功能,还是只是没有实现?
编辑 好的,我现在明白了。我的问题是基于 C# 编译器对待 ValueTuples 不同于其他类型的假设,关于关键字 readonly。所以,如果它已经是一个例外,为什么不为 consts 再做一个例外。但是,事实上,这个逻辑似乎适用于所有结构。所以这不起作用:
class Foo {
readonly ExampleStruct field;
void Method() {
field.structField = 2;
}
}
struct ExampleStruct {
public int structField;
}