日期:2014-05-17  浏览次数:22695 次

5个IF语句,为什么只显示最后一个IF语句?

string u = "";
string Id = Requst["id"];
string Type = Request["type"]
if (Type == "1" || Id == "0")
{
  u="XX";
}
if (Type == "2" || Id == "0")
{
  u="XX";
}
if (Type == "3" || Id == "0")
{
  u="XX";
}
if (Type == "4" || Id == "0")
{
  u="XX";
}
if (Type == "5" || Id == "0")
{
  u="XX";
}
Response.Write(u);


以上语句,满足条件后(a.aspx?type=1&id=0)运行后只显示最后一个,其他的不显示,这是什么情况?

------解决方案--------------------
你只Response.Write(u);一次
------解决方案--------------------
你的五个if语句都执行了,因为id=0,而你在每个if里面都重新对u进行赋值,所以u的值是最后一次赋的值,即第五次赋的值。
------解决方案--------------------
因为
------解决方案--------------------
 Id == "0"

可以这么写
if(id=="0")
{
  if (Type == "1") {   u="XX"; }
  if (Type == "2") {   u="XX"; } 
  if (Type == "3") {   u="XX"; } 
  if (Type == "4" ) {   u="XX"; } 
  if (Type == "5" ) {   u="XX"; } 
}

------解决方案--------------------
u 每次都重新赋值了 没有累加
------解决方案--------------------
引用:
因为
------解决方案--------------------
 Id == "0"

可以这么写
if(id=="0")
{
  if (Type == "1") {   u="XX"; }
  if (Type == "2") {   u="XX"; } 
  if (Type == "3") {   u="XX"; } 
  if (Type == "4" ) {   u="XX"; } 
  if (Type == "5" )……

id="0"这个条件可以提取出来,不然你得五个if会全部触发,所以只会输出最后一个执行后的值
------解决方案--------------------
或者你用
if (Type == "1" && Id == "0") {   u="XX"; } 
if (Type == "2" && Id == "0") {   u="XX"; } 
if (Type == "3" && Id == "0") {   u="XX"; } 
if (Type == "4" && Id == "0") {   u="XX"; } 
if (Type == "5" && Id == "0") {   u="XX"; } 

Type == "1" && Id == "0"  意思为:type等于1,并且id等于0 两个条件都要满足

Type == "1" 
------解决方案--------------------
 Id == "0"  意思为:type等于1,或者id等于0 两个条件只需要满足一个即可
------解决方案--------------------