В С# анонимный тип может быть следующим:
method doStuff(){
var myVar = new {
a = false,
b = true
}
if (myVar.a)
{
// Do stuff
}
}
Однако следующее не будет компилироваться:
method doStuff(){
var myVar = new {
a = false,
b = true
}
if (myVar.a)
{
myVar.b = true;
}
}
Это потому, что поля myVar доступны только для чтения и не могут быть назначены. Кажется, что желание сделать что-то наподобие последнего довольно часто; возможно, лучшим решением, которое я видел, является просто определение структуры вне метода.
Однако нет ли другого способа сделать работу над этим блоком? Причина, по которой это меня беспокоит, myVar - это локальная переменная этого поля, поэтому кажется, что ее следует использовать только внутри метода, который ее использует. Кроме того, необходимость размещения структуры вне метода может сделать объявление объекта довольно далеким от его использования, особенно в длинном методе.
Поставить другим способом, есть ли альтернатива анонимным типам, которые позволят мне определить такую структуру (я понимаю, что структура существует в С# и должна быть определена вне метода), не делая ее доступной только для чтения? Если нет, есть ли что-то принципиально неправильное в том, что вы хотите сделать это, и должен ли я использовать другой подход?