switch 语句的控制表达式可也是任何数据类型吗?c#语言中。

解决方案 »

  1.   

    switch 表达式的类型为 sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型,或者可以隐试转换到这些类型的自定义对象。
    所以这句话是错误的。
      

  2.   

    我上面的回答不有个地方不太严谨。switch 表达式支持的类型为 sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型,或者可以隐试转换到这些类型的自定义对象其他内置类型
      

  3.   

    不可以。你可以用if else代替switch。
      

  4.   

    简单来说,编译器会为switch语句内联相等判断代码,所以自定义类型、引用类型无法做到这一点,无法被switch支持。
      

  5.   

    如果自定义类型(包括引用类型)声明了匹配的隐式转换,那么这个对象也可以用于switch的。
    比如:        class TestObj
            {
                public int Size { get; set; }            public static implicit operator int(TestObj obj)
                {
                    return obj.Size;
                }
            }        static void Main(string[] args)
            {
                TestObj to = new TestObj();
                int size = to;//可以隐式转换到int类型
                switch (to)
                {
                    case 0:
                        break;
                    default:
                        break;
                }
            }因此对于C#能用于switch语句的类型包括:
    除了小数类型object类型外所有内置类型(MSDN内置类型表),
    以及所有声明了匹配隐式转换的自定义类型。PS:上面的回复漏了一个bool类型