dotnet/roslyn
Code fix for CS1612 when assigning to a nested struct field or property
Aperta
#51.512 aperta il 26 feb 2021
Area-IDEIDE-CodeStylehelp wanted
Metriche repository
- Star
- (20.414 stelle)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
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.