我有三个属性如下:-
public Nullable<double> SPEED { get; set; }
public Nullable<Int64> PROCESSORCOUNT { get; set; }
public string CPUNAME { get; set; }
现在里面我 asp.net mvc5 web 应用程序的控制器类中,如果我传递 null 为上述三个变量,如下:-
query["proSpeed"] = sj.SPEED.ToString();
query["proCores"] = sj.PROCESSORCOUNT.ToString();
query["proType"] = sj.CPUNAME.ToString();
然后 tostring () 只会引发对 null 字符串异常主要 sj.CPUNAME.ToString();
,所以会有人寄为什么 ToString()
会不会引发异常,如果我试着转换 double?
或 long?
,包含空值的字符串,但只有如果字符串为空,它将引发 null 引用异常吗?
为了简化它︰
int? x = null;
string result = x.ToString(); // No exception
在这里 null
不是空引用。它是只是一个空的值类型的 int?
,即类型的值 Nullable<int>
, HasValue
是假的。
你只需在调用 Nullable<T>.ToString()
方法对该值。没有空的引用都参与其中,因此有没有 NullReferenceException
。行为是作为记录的︰
当前值的文本表示形式
Nullable<T>
对象如果HasValue
属性是 true,则为空字符串 ("") 如果HasValue
属性为 false。
换句话说,它是作为有效地实现︰
return HasValue ? Value.ToString() : "";
注意,这仅适用是否编译时类型为 null 的类型。
如果你放弃拳击一个 null 值,那么你会得到空引用︰
object y = x; // Oh noes, now y is a null reference...
string bang = y.ToString(); // so this throws!