Assume we have following code :
struct Article
{
public string Prop1 { get; set; }
}
Article? art = new Article();
art?.Prop1 = "Hi"; // compile-error
The compile error is
CS0131 The left-hand side of an assignment must be a variable, property or indexer.
Actually art?.Prop1 is a property and should be considered as a valid assignment!
I don't see any problem with assignment to make this code invalid.
Why C# 6.0 doesn't let to set properties of a non-null nullable struct ?
Alternately any suggestion for one line code to make assignment valid would be appreciated.
This code:
will define a
Nullable<Article>but later when you do:This will mean using Null propagation/conditional operator.
Null propagation/conditional operator is for accessing properties, not setting them. Hence you can't use it.
As @Servy said in the comments, the result of Null conditional operator is always a value and you can't assign a value to a value, hence the error.
If you are only trying to set the property then you don't need
?with the object name,?withNullable<T>types is used at the time of declaration, which is syntactic sugar to: