swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 
查询到的答案:
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。但是我用程序实现,不报错,输出“aa”            string s = "a";
            switch (s)
            {
                case "a": s = "aa"; break;
                case "b": s = "bb"; break;
            }
            Console.Write(s);请问答案到底是什么啊

解决方案 »

  1.   

    switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 
    那这句话是什么意思啊?难道是答案有错?
      

  2.   


    是switch(expr1)
    expr1参数类型应该是 int、 short、 char 或者 byte。long,string
    其它的类型将会报错
      

  3.   

    请问能用代码写个例子吗?就是当传入long的时候报错的例子
      

  4.   

    switch(expr1)中,expr1可以是string。你程序都输出正确结果还不够说明问题吗?
      

  5.   

    aa  string 是引用类型
      

  6.   

    参数是地址,类型转换了。
    相当于int.所以答案是aa。
      

  7.   

    自己做个尝试就可以了啊,你看看你在网上的内容写的是c#的东西还是java 的东西?
      

  8.   

    string类型是switch语句接受的唯一一种引用类型参数。
    详细解析请看
    http://msdn.microsoft.com/zh-cn/downloads/dd310342.aspx
      

  9.   

    switch 里的只是一个表达式,和这个表达式是什么数据类型没什么关系,不仅仅只有这些int、 short、 char 或者 byte类型,所有类型都可以。
    比如:using System;class Mytest
    {
    static void Main()
    {
    bool abc=false;
    switch(abc)
    {
    case true:
    Console.WriteLine("abc是真的");
    break;
    case false:
    Console.WriteLine("abc是假的");
    break;
    }
    }
    }
      

  10.   

    晕,JAVA的选择控制语句什么时候支持字符串了啊,肯定报错啊
      

  11.   

    switch 语句的主导类型由 switch 表达式建立。如果 switch 表达式的类型为 sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型,那么这就是 switch 语句的主导类型。否则,必须有且只有一个用户定义的从 switch 表达式的类型到下列某个可能的主导类型的隐式转换:sbyte、byte、short、ushort、int、uint、long、ulong、char、string。如果不存在这样的隐式转换,或者存在一个以上这样的隐式转换,将发生编译时错误。