次のコードを確認して、なぜコンパイラエラーが発生しているのかを視覚化してください。空コンディショナリング演算子は代入に使用できません。
class Program
{
static void Main(string[] args)
{
Sample smpl = GetSampleObjectFromSomeClass();
//Compiler Error -- the left-hand side of an assignment must be a variable property or indexer
smpl?.isExtended = true;
}
}
public class Sample
{
public bool isExtended { get; set; }
}
null条件付けは、プロパティ、変数などにアクセスするためだけであり、割り当てには使用しないことを推論する必要がありますか?
注:私は同様の投稿(下記のリンク)を参照しましたが、十分な議論ができていないようです。 Why C# 6.0 doesn't let to set properties of a non-null nullable struct when using Null propagation operator?
編集:私の期待は適切ではないよう 私は
If(null!= smpl)
{
smpl.isExtended = true;
}
のようなものを期待していたらしいです!
smplがnullの場合はどうなりますか? –
私はisExtendedプロパティをそのままにします。私には、これはelse節なしのIfでなければなりません。 –
@sstan私はすでに私のコメントで、私は答えが役に立たなかったと投稿しました。 –