你可以使用Enum for Double变量吗?

Joh*_*upe 6 c# enums

我已经创建了一个用于在C#中处理单位转换的类.它不起作用,因为它应该只返回字符串.

这是班级:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace RestaurantManagementSystem
{
    class unitHandler
    {
        public enum Units
        {
            Grams = 1,
            KiloGrams = 0.001,
            Milligram = 1000,
            Pounds = 0.00220462,
            Ounces = 0.035274,
            Tonnes = 0.000001,

            Litres = 1,
            Millilitres = 1000,
            Cups = 4.22675,
            FluidOunces = 33.814,
            TeaSpoon = 202.884,
            TableSpoon = 67.628,
            CubicFeet = 0.0353147,
            CubicInch = 61.0237,
            CubicCentimetres = 0.0001,
            CubicMetres = 0.001

        }

        public double Convert_Value(Units from, Units to, double quantity)
        {
            double converted_quantity = 0;

            double fromValue = quantity * Convert.ToDouble(from.ToString());

            converted_quantity = fromValue * Convert.ToDouble(to.ToString());

            return converted_quantity;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想以某种方式想要枚举类型包含每个单位的转换因子的双重值,然后使用它们进行转换并返回转换后的数量.

Adi*_*dil 13

不,枚举的默认类型是int或者long您不能使用小数字.你可以使用enum 的结构或类intead来实现double

public struct Units
{
        public const double Grams = 1;
        public const double KiloGrams = 0.001;
        public const double Milligram = 1000;
        public const double Pounds = 0.00220462;
        public const double Ounces = 0.035274;
        public const double Tonnes = 0.000001;
        // Add Remaining units / values
}
Run Code Online (Sandbox Code Playgroud)

并使用它

double d = Units.KiloGrams;
Run Code Online (Sandbox Code Playgroud)

  • 至少使用带常量的静态类. (5认同)

Car*_*ers 5

没有:

我尝试将其交给 Visual Studio:

public enum Test : double
{
    Hello, World
}
Run Code Online (Sandbox Code Playgroud)

它说:

预期类型为 byte、sbyte、short、ushort、int、uint、long 或 ulong