【发布时间】:2015-08-25 14:38:52
【问题描述】:
考虑这个在 Visual Studio 2015 中编译良好的简单程序:
public class Program
{
enum Direction
{
Up,
Down,
Left,
Right
}
static void Main(string[] args)
{
// Old style
Console.WriteLine(string.Format("The direction is {0}", Direction.Right));
Console.WriteLine(string.Format("The direction is {0}", (int)Direction.Right));
// New style
Console.WriteLine($"The direction is {Direction.Right}");
Console.WriteLine($"The direction is {(int)Direction.Right}");
}
}
...按预期输出:
The direction is Right
The direction is 3
The direction is Right
The direction is 3
但是,Visual Studio 2015 一直在此行特别建议“快速操作”:
// "Cast is redundant" warning
Console.WriteLine($"The direction is {(int)Direction.Right}");
它坚持(int)“演员表是多余的”,并建议作为“删除不必要的演员表”的潜在解决方案,这当然是错误的,因为它会改变结果。
有趣的是,它没有给我任何等效语句的警告:
// No warnings.
Console.WriteLine(string.Format("The direction is {0}", (int)Direction.Right));
在插值字符串中使用表达式时,有人可以为这种误报提供合理的解释吗?
【问题讨论】:
标签: c# casting visual-studio-2015 string-interpolation c#-6.0