操作系统:winxp sp2
语言环境:VS。NET2003
语言:C#。ASP。NET在HTML中写入一个DrowDownList控件ID 为“list"和一个“submit"(<input type="submit" value="提交">),还有一个ASP。NET服务器控件Label ID为Label1,在Page_Load中写入如下代码:
if(Request.Form["list"]!="")
{
Label1.Text="all rights" + Request.Form["list"];
Debug.WriteLine(Request.From["list"])
}运行的结果为:label1="all right";这就有问题了。按道理来讲第一次结果应该为label1="",
大家请注意if(...)中的语句。如果说第一次执行的时候来自于"list"中的值不为空才执行IF块中的语句,但是为什么块中的语句却又正常执行,难道Reuqest.Form["list"]在第一次启动的时候不为空???但是用DEUBG输出“LIST”的值又为空呢?这不是悖论吗?后来将上面的代码只改动IF语句:
if(Request.Form["list"]!=null) //注意用null替代"",一切正常。难道是""在C#中不代表空。或是C#的编译器有问题?
语言环境:VS。NET2003
语言:C#。ASP。NET在HTML中写入一个DrowDownList控件ID 为“list"和一个“submit"(<input type="submit" value="提交">),还有一个ASP。NET服务器控件Label ID为Label1,在Page_Load中写入如下代码:
if(Request.Form["list"]!="")
{
Label1.Text="all rights" + Request.Form["list"];
Debug.WriteLine(Request.From["list"])
}运行的结果为:label1="all right";这就有问题了。按道理来讲第一次结果应该为label1="",
大家请注意if(...)中的语句。如果说第一次执行的时候来自于"list"中的值不为空才执行IF块中的语句,但是为什么块中的语句却又正常执行,难道Reuqest.Form["list"]在第一次启动的时候不为空???但是用DEUBG输出“LIST”的值又为空呢?这不是悖论吗?后来将上面的代码只改动IF语句:
if(Request.Form["list"]!=null) //注意用null替代"",一切正常。难道是""在C#中不代表空。或是C#的编译器有问题?
null 是object,没值,比如一个函数 DataRow Select(string name){} 的作用是寻找Primarykey 的值为 name 的datarow ,那么就可以很方便的用 if (fun==null)来判定寻找的结果:返回 null表示没找到,否则返回一个 DataRow.
比如你可以把标题改为:C#的编译器有bug?一起讨论一下
这样
空串和 , null 当然不同了。
null 是什么都不是,连类型都没有确定的东西
"" 已经是字符串但是 0 长度的字符串。
object o1 = null;
object o2 = "";if (o1 is string)
{
//这个不会运行
Debug.WriteLine("O2 Is String");
}if (o2 is string)
{
//这个可以运行
Debug.WriteLine("O2 Is String");
}
大多语言都是这个样的。