运行如下代码:
<%@ page language="vb" %><script runat="server">
sub page_load(sender as object, e as eventargs)
dim intage as integer =7
select case intagecase "7"
response.write("That is a string!")case 7
response.write("You are 7 years old")

case <10
response.write("Wow, you are young")
end select
end sub</script><html>
<body></body>
</html>运行之后的结果是"That is a string!". 为什么不是"You are 7 years old".我不是已经把intage定义为整型了吗?第一个CASE是"7"啊!:( 哪个高手上来解答一下,谢谢了.

解决方案 »

  1.   

    case 7
    response.write("You are 7 years old")case "7"
    response.write("That is a string!")你把这个换一下,看看是不是可以了,在这里可能是一样的功能吧
      

  2.   

    谢谢各位的解答,这段代码是为了测试一下case语句的执行顺序。
    按“空马甲”的方法我也换过,就是会出来"You are 7 years old".这本身是case语句的正确执行顺序。
    我的问题是在case"7"时,"7"应该看作字符串的,所以条件应该是假,按如下
    case "7"
    response.write("That is a string!")
    case 7
    response.write("You are 7 years old")
    出来的结果应该是"You are 7 years old",而不是"That is a string!"
    以上,请高手继续回答..谢谢.
      

  3.   

    我的理解:
    在对变量intage进行switch时,第一次比较时,由于integer和string类型不同,将integer装箱,转换为string类型后比较,两值相等,故为真,所以输出 that is a string!没有break?应该会顺序执行下去吧。
      

  4.   

    VB.net没弄过,不过VB以前倒是弄过,
    你打印个 
    7 + "7" 
    试试
      

  5.   

    没有break?integer装箱,转换为string类型后比较
      

  6.   

    我按照"会走路的鱼",做了7+"7",不管我定义7或"7"为整型或字符串,结果都是14.
    好象数据类型之间会自动转换,但没有找到相关资料,不敢确定.
    另外,select case 语句不用break,它在找到符合的条件执行相应语句,完了就跳出select case不管还有没有其他相符的条件存在了.^-^
    我新手分少,只能给大家这么点了.以后请大家多多关照. :)