public decimal v1 {
get {
return this._v1;
}
set {
this._v1 = value ?? 0M; // also I tried, default(decimal)
}
}
エラーメッセージは言う:
演算子'??' タイプ「decimal」および「decimal」のオペランドには適用できません
なぜそれが機能しないのですか、そしてどうすればそれを機能させることができますか?
タイプをnullにすることはdecimal
できないため、ここではnull合体演算子は意味がありません。に設定_v1
するだけvalue
です。
これらは値型であり、null
使用することはできませんNullable<decimal>
private decimal? _v1;
public decimal? V1
{
get
{
return this._v1;
}
set
{
this._v1 = value ?? 0M;
}
}
小数ですか?または小数
?? 小数で動作しますか?ただし、小数がnullになることはないため、小数ではありません。
それがヌル合体演算子です。10進数はnullにできないため、10進数では使用できません。
decimal?
この機能が必要な場合は、nullに設定できるを使用できます。
public decimal? v1
{
get
{
return this._v1;
}
set
{
this._v1 = value ?? 0M;
}
}
デフォルトの10進値0がnull、空、または設定されていないと見なされ、ゼロでない場合にのみ使用value
する場合は、次のように実行できます。
decimal nextBest = 10M;
public decimal v1 {
get {
return this._v1;
}
set {
// Use value by default (only if it's not 0), Otherwise use a different number.
this._v1 = (value != 0)? value : nextBest;
}
}
クラスIeのプロパティに対してこれを実行しようとしている場合:
public class TestCase {
public decimal TestProp {get;set;}
}
次のようにnull合体を行うことができます。
var testCase = new TestCase();
return testCase?.TestProp ?? 0M