我有这样的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
. . .
if (null != request.UserAgent)
{
str = String.Format("userAgent == {0}", request.UserAgent.ToString());
MessageBox.Show(str);
}
. . . // many other similar ones, comparing null to string, etc. types
但是这个:
if (null != request.ContentLength)
{
str = String.Format("contentLength == {0}", request.ContentLength.ToString());
MessageBox.Show(str);
}
...因编译时错误而失败,“运算符'!='无法应用于''和'long'类型的操作数”
我可以附加一个ToString()来编译它:
if (null != request.ContentLength.ToString())
. . .
......但这看起来很奇怪。为什么HttpWebRequest的ContentLength(很长)与null无法比较?
答案 0 :(得分:3)
ContentLength
是Int64
,不是可以为空的类型。 string
可以是null
,因此转换为字符串可以进行比较。
答案 1 :(得分:2)
那是因为long
是一个值类型,值类型永远不能为空。
如果您想将null分配给基本类型,例如int
,long, double
等,您可以将其声明为:
long? myLong = null;