switch 语句的控制表达式可也是任何数据类型吗? switch 语句的控制表达式可也是任何数据类型吗?c#语言中。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 switch 表达式的类型为 sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型,或者可以隐试转换到这些类型的自定义对象。所以这句话是错误的。 我上面的回答不有个地方不太严谨。switch 表达式支持的类型为 sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型,或者可以隐试转换到这些类型的自定义对象或其他内置类型。 不可以。你可以用if else代替switch。 简单来说,编译器会为switch语句内联相等判断代码,所以自定义类型、引用类型无法做到这一点,无法被switch支持。 如果自定义类型(包括引用类型)声明了匹配的隐式转换,那么这个对象也可以用于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类型 winform如何做出QQ主菜单的效果 C# 内存溢出错误? 为什么我的FORM一最大化或最小化就报错? c#的web里面如何判断页面中的控件的内容是否有更改 C#能否读取客户端控件的value access 日期时间型 codejock command bars designer设计的菜单工具栏怎么不显示 请问哪有好一点的WINFORM信息管理系统的源码 谁可以讲解一下telnet的工作原理????? 窗体的设计 c#输入字符串的格式不正确,求解! c#在一个面板中得到文字的位图
所以这句话是错误的。
比如: 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类型