dotnet/roslyn
Code fix for CS1612 when assigning to a nested struct field or property
Ouverte
#51 512 ouverte le 26 févr. 2021
Area-IDEIDE-CodeStylehelp wanted
Métriques du dépôt
- Stars
- (20 414 étoiles)
- Métriques de merge PR
- (Merge moyen 6j 17h) (256 PRs mergées en 30 j)
Description
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.