【发布时间】:2022-03-10 06:55:50
【问题描述】:
在 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 的字段是只读的,无法赋值。似乎想要做类似后者的事情是相当普遍的。也许我见过的最好的解决方案就是在方法之外定义一个结构。
但是,真的没有其他方法可以使上述块工作吗?它困扰我的原因是,myVar 是该字段的局部变量,因此似乎只能在使用它的方法内部引用它。此外,需要将结构体放在方法之外会使对象的声明与其用途相去甚远,尤其是在长方法中。
换句话说,是否有匿名类型的替代方法允许我定义这样的“结构”(我意识到结构存在于 C# 中并且必须在方法之外定义)而不使其成为只读?如果不是,那么想要这样做有什么根本性的问题吗?我应该使用不同的方法吗?
【问题讨论】:
-
匿名类型被设计为一次性,快速使用。如果你的使用比这更复杂,有所有的 readsons 来创建一个命名类型。
标签: c# data-structures struct anonymous-types