タイプのオペランドに適用することはできないと、突然演算子 '?' 「T」<code>Feature</code>ジェネリックをしようとして
オペレータ言っコンパイラ「?」タイプのオペランドに適用することはできませんここでは「T」
はコード
public abstract class Feature<T>
{
public T Value
{
get { return GetValue?.Invoke(); } // here is error
set { SetValue?.Invoke(value); }
}
public Func<T> GetValue { get; set; }
public Action<T> SetValue { get; set; }
}
代わりに
get
{
if (GetValue != null)
return GetValue();
return default(T);
}
このコードを使用することが可能である。しかし、私は修正する方法を疑問に思っていますその素晴らしいC#6.0ワンライナー。
これは本当に面白いです。私はそれがバグかもしれないと思う。 'T:class'を使って示唆する答えは、' Func 'が' T'ではなくヌルであるかどうかをチェックしているという事実を見逃しています。それが動作すれば、 'GetValue?.Invoke()'構文もうまくいくはずです。 次のように書くことができます: 'return GetValue?.Invoke()??デフォルト(T) ' –
kjbartel
@kjbartel:'? 'が原因です。式が 'null'で、' default(T) 'ではなく' null'を返します。 – Joey
Funcはnullです。 –
kjbartel