4

decimalへの変換を使用して、バイト単位で格納されたいずれかまたは他の数値byte arrayが含まれるようにします。nullここでの問題は、 anullをに変換しようとするとNullable decimal、 に変換されることzeroです。残ってほしいnull

Convert.ToDecimal(obj.sal== null ? null : System.Text.Encoding.ASCII.GetString(obj.sal))
4

2 に答える 2

13

結果が潜在的に null になるようにしたい場合は、呼び出してはいけませんConvert.ToDecimal- これは常に を返しますdecimal。代わりに、次を使用する必要があります。

x = obj.sal == null ? (decimal?) null 
                    : Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));

nullリテラルをキャストする必要があることに注意してください。または、2 番目のオペランドの型が次のようになるdecimal?ように他の形式を使用する必要があります。そうしないと、コンパイラは条件式の型を推測できません。詳細については、この質問を参照してください。default(decimal?)decimal?

于 2013-10-10T07:19:19.880 に答える
1

null はオブジェクト型 (事実上型なし) であり、型付きオブジェクトに割り当てる必要があるためです。

x = obj.sal == null ? (decimal?) null 
                : Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));
于 2013-10-10T07:19:06.367 に答える