在C#中,匿名类型可以如下定义:
不过,真的没有其他方法使上面的代码块工作吗?这让我困扰的原因是,myVar是该字段的局部变量,因此似乎应该仅在使用它的方法内引用它。此外,需要将结构体放在方法外部可能会使对象的声明与其使用相距甚远,特别是在长方法中。
换句话说,是否有另一种替代匿名类型的方法,允许我定义像这样的“结构体”(我意识到结构体存在于C#中,必须在方法外定义),而不使其变为只读?如果没有,那么是否在想要这样做时存在根本性错误,并且我应该使用不同的方法?
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的字段是只读的,不能被赋值。似乎想要做类似后者的事情是相当常见的,也许我见过的最好的解决方案就是在方法外部定义一个struct。不过,真的没有其他方法使上面的代码块工作吗?这让我困扰的原因是,myVar是该字段的局部变量,因此似乎应该仅在使用它的方法内引用它。此外,需要将结构体放在方法外部可能会使对象的声明与其使用相距甚远,特别是在长方法中。
换句话说,是否有另一种替代匿名类型的方法,允许我定义像这样的“结构体”(我意识到结构体存在于C#中,必须在方法外定义),而不使其变为只读?如果没有,那么是否在想要这样做时存在根本性错误,并且我应该使用不同的方法?