switch 表达式必须是 bool

Yas*_*lil -5 c#

我是 C# 的新手,这段代码我试图使用 double 作为数据类型

using System;

namespace FirstProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "My First Project";

            double num1, num2, div;

            Console.WriteLine("Enter The First Number :");
            num1 = double.Parse(Console.ReadLine());

            Console.WriteLine("Enter The Second Number :");
            num2 = double.Parse(Console.ReadLine());

            switch (num2)
            {
                case 0:
                Console.WriteLine("Alert Divide By Zero");
                    break;
                default:
                     div = num1 / num2;
                    Console.WriteLine("The Result Of Division Is " + div);
                    break;
            }          

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该变量num2有一个警告Error 1 A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type C:\Users\Future\documents\visual studio 2012\Projects\FirstProject\FirstProject\Program.cs 19 21 FirstProject ...如何在 switch 表达式中使用 double ?

没有具体细节。该代码仅使用用户输入的两个数字,然后检查第二个数字。如果第二个数字为零,则显示警报,否则显示除法结果。(这是为那些要求更多细节的人准备的)当使用 int 代替 double 时,没有出现错误,但是当使用 double 将除法结果作为 double 获取时,我得到了之前显示的错误。

Ale*_*rov 5

对于 7.0 之前的 C# 语言,开关仅限于 bool、char、string、integral、enum 或相应的可空类型。C# 语言版本从 7.0 switch 语句开始支持任何非空表达式。来源:https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch#the-match-expression

如果你真的想在 switch 中使用 double,请在项目属性中检查你使用的框架版本和语言版本。C# 7.0 至少需要 VS 2017 和 .NET 4.7 作为目标框架。

我已经在 .NET Core 3.1 上尝试过,它可以用于双打:

double num = 1.0;
switch (num)
{
    case 0.0:
        Console.WriteLine("1");
        break;
    default:
        Console.WriteLine("2");
        break;
}
Run Code Online (Sandbox Code Playgroud)

但是,正如其他人已经指出的那样,这确实是使用 switch 的奇怪方式。