【发布时间】:2015-01-14 21:16:15
【问题描述】:
不清楚的行为,如果我声明类型:
struct Token
{
public static implicit operator int(Token x)
{
return 0;
}
public static implicit operator string(Token x)
{
return "";
}
}
我们有两个隐式转换。 工作文件,如果我使用
var t = new Token();
if (t == "123")
{
}
CS0151:switch 表达式或 case 标签必须是 bool、char、string、integral、enum 或相应的可为 null 类型
如果我使用:
switch (t)
{
case "123" :
{
break;
}
}
但如果我删除 int 隐式转换,那么错误就会消失。
struct Token
{
public static implicit operator string(Token x)
{
return "";
}
}
是编译器的错误还是正确的行为?
【问题讨论】:
标签: c#