RaY*_*ell 10 .net .net-4.0 switch-statement
我有一个问题,在下面的代码中了解导致编译错误的原因:
static class Program
{
static void Main()
{
dynamic x = "";
var test = foo(x);
if (test == "test")
{
Console.WriteLine(test);
}
switch (test)
{
case "test":
Console.WriteLine(test);
break;
}
}
private static string foo(object item)
{
return "bar";
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误switch (test)符合:
A switch expression or case label must be a bool, char, string, integral,
enum, or corresponding nullable type.
Run Code Online (Sandbox Code Playgroud)
Intellisence向我展示了foo操作将在运行时解决,这很好,因为我使用动态类型作为参数.但是我不明白if当开关没有时条件编译得很好.
上面的代码只是我在我的应用程序(VSTO)中的简化版本,它是在将应用程序从VSTO3迁移到VSTO4之后出现的,当时VSTO中的一个方法被更改为返回dynamic类型值而不是object.
任何人都可以给我一个解释是什么问题.我知道如何解决它,但我想了解发生了什么.
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |