Типы ValueTuple, объявленные как поля, могут быть изменяемыми:
class Foo {
(int, int) bar = (0, 1);
}
или только для чтения:
class Foo {
readonly (int, int) bar = (0, 1);
}
и эта изменчивость применяется к каждому члену. Я ожидал бы, что это будет также распространено на объявления const:
class Foo {
const (int, int) bar = (0, 1);
}
Но это утверждение не компилируется.
Есть ли определенный случай, когда это нежелательная функция или просто что-то не реализовано?
EDIT
Хорошо, сейчас я понимаю. Мой вопрос был основан на предположении, что компилятор C # обрабатывает ValueTuples иначе, чем другие типы, в отношении ключевого слова только для чтения. Итак, если это уже исключение, почему бы не сделать еще одно исключение для супругов. Но на самом деле эта логика, кажется, применима ко всем структурам. Так что это не сработает:
class Foo {
readonly ExampleStruct field;
void Method() {
field.structField = 2;
}
}
struct ExampleStruct {
public int structField;
}