dotnet/roslyn
Code fix for CS1612 when assigning to a nested struct field or property
开放
#51,512 创建于 2021年2月26日
Area-IDEIDE-CodeStylehelp wanted
仓库指标
- 星标
- (20,414 个星标)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 256 个 PR)
描述
It's not uncommon to write this code, then back up and realize you have to rewrite the entire assignment into three lines.
class C
{
public S StructProperty { get; set; }
void M()
{
/* ❌ CS1612 Cannot modify the return value of 'C.StructProperty' because it is not a variable
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */
StructProperty.InnerProperty = 42;
}
}
struct S
{
public int InnerProperty { get; set; }
}
It would save me time if there was a light bulb fix 💡 Copy and set updated 'StructProperty' value:
var structProperty = StructProperty;
structProperty.InnerProperty = 42;
StructProperty = structProperty;
I don't mind if it bails at a certain level of nesting because I rarely see such code, but there could be value in handling at least two struct properties at the end of the chain. (x.StructProperty.NestedStructProperty.Y = 42;)
This issue could be linked from the big table in https://github.com/dotnet/roslyn/issues/23326.