これを単純化するための演算子または組み込み関数はありますか:
myVal = object1.object2.something(a,b).dataColumn.toString()==""?object1.object2.something(a,b).dataColumn.toString():"-";
私は次のようなことができることを知っています:
string str = object1.object2.something(a,b).dataColumn.toString();
myVal =str==""?"-":str;
しかし、私には多くのオブジェクトがあり、それを避けたい:
string str1 = object1.object2.something(a,b).dataColumn1.toString();
myVal1==""?str1:"-"
string str2 = object1.object2.something(a,b).dataColumn2.toString();
myVal2==""?str2:"-"
:
string strN = object1.object2.something(a,b).dataColumnN.toString();
myValN==""?strN:"-"
関数を作成することもできます。
private string CheckNull(object dataColumn){
return dataColumn == System.DBNull?"-":dataColumn.toString();
}
myVal1 = CheckNull(object1.object2.something1(a,b).dataColumn.toString())
myVal2 = CheckNull(object1.object2.something2(a,b).dataColumn.toString())
myVal3 = CheckNull(object1.object2.something3(a,b).dataColumn.toString())
最も簡単な方法は、?? を使用することです。演算子ですが、問題は「dataColumn」が ?? と互換性がないことです。null の代わりに system.DBNull を返すことがあるためです。即時ウィンドウ出力を見てください。
System.DBNull??"-"
'System.DBNull' is a 'type', which is not valid in the given context
null??"-"
"-"
if..then なしで dataColumn.toString()=="" の場合に "-" を返すことができる (文字列) 関数または演算子があるのだろうか (なぜなら、それらすべてに対して多くの if..then を作成する必要があるからです)それ以外の場合は、上記の関数アプローチを使用します。
string str = object1.object2.something(a,b).dataColumn.toString().if("","-");