C# : No best type was found for the switch expression.
时间: 2024-09-25 10:15:24 浏览: 77
Ch4.rar_If..._SwitchStatement.sln_csharp swit
在C#中,当你遇到 "No best type was found for the switch expression" 的错误,这通常意味着你在编写 `switch` 语句时,没有找到一个明确的隐式转换或者静态类型匹配来进行分支判断。`switch` 语句期望有一个可以比较并且有多种可能值的表达式,但是当前表达式的类型在所有 case 子句中找不到明确的最佳匹配。
举个例子,如果你尝试这样做:
```csharp
int num = 5;
switch (num)
{
case string s:
Console.WriteLine(s);
break;
}
```
这里,`string` 类型并不是 `int` 的直接子类型,所以不会找到最佳匹配。你应该确保你的 `switch` 表达式可以隐式转换到某个 `case` 子句的类型,或者显式添加类型转换:
```csharp
int num = 5;
switch ((object)num) // 强制转换为 object 类型,使得 int 可以匹配任何 string
{
case string s:
Console.WriteLine(s);
break;
case int i:
Console.WriteLine(i);
break;
}
```
阅读全文