C# 浮点枚举和聚合类

C# 浮点枚举和聚合类,c#,.net,C#,.net,我必须创建walet类,在该类中我计算它有多少硬币,因此: enum Coins { OneCent = 0.01f, FiveCent = 0.05f, OneDollar = 1.0f } 以及: 但这样,我不能将静态类型传递为泛型类的实例 那么,我怎么会意识到这一点呢?(列出浮点枚举值的数量)首先,为了避免舍入问题,需要使用十进制。其次,您需要使其成为一个实例类,以显示一些静态属性,如OneCent、FiveCent和OneDollar,如下所示: public

我必须创建
walet
类,在该类中我计算它有多少
硬币,因此:

enum Coins {
    OneCent = 0.01f,
    FiveCent = 0.05f,
    OneDollar = 1.0f
}
以及:

但这样,我不能将
静态
类型传递为泛型类的
实例


那么,我怎么会意识到这一点呢?(列出浮点枚举值的数量)

首先,为了避免舍入问题,需要使用
十进制
。其次,您需要使其成为一个实例类,以显示一些静态属性,如
OneCent
FiveCent
OneDollar
,如下所示:

public sealed class Coins
{
    private decimal _num;
    private Coins(decimal num)
    {
        _num = num;
    }
    public static readonly Coins OneCent = new Coins(0.01M);
    public static readonly Coins FiveCent = new Coins(0.05M);
    public static readonly Coins OneDollar = new Coins(1M);
    //add more properties like this
}

拥有一个带有常量的
非静态
类怎么样?
十进制
对于货币对象来说是一个很好的选择,因为没有舍入问题。@Rohit-Vats,可能是,但是我应该如何在
列表中传递它。Add
?@psubsee2003,
枚举
几乎不能有
双倍
值,正如我所知。它可以有任何整数类型。好的,你能告诉我,我应该如何将这个类传递到
List.Add()
方法中吗?类似这样:
List.Add((新硬币()).OneCent,25)?@FSou1刚刚列出。添加(硬币。一美分)。25来自哪里?我的意思是这一行:
this.CoinsCash.Add(新行数量{entity=Coins.OneCent,数量=25})
@FSou1
此答案中的Coins
没有公共构造函数。不是你发起的。它与您在问题中的静态类想法完全相同,只是它已转换为实例类,因此您将其用作泛型类型约束。@FSou1这基本上是枚举在内部执行的操作。静态成员是枚举值,private decimal是存储数据的位置,并且您只能在同一个类中对其进行恢复,因为构造函数是私有的。
public class Walet {
    public List<RowQuantity<Coins>> CoinsCash;
    public Walet() {
        this.CoinsCash.Add(new RowQuantity<Coins> { entity = Coins.OneCent, Quantity = 25 });
    }
}
public static class Coins {
    public const float OneCent = 0.01f;
    public const float FiveCent = 0.05f;
    public const float OneDollar = 1.0f;
}
public sealed class Coins
{
    private decimal _num;
    private Coins(decimal num)
    {
        _num = num;
    }
    public static readonly Coins OneCent = new Coins(0.01M);
    public static readonly Coins FiveCent = new Coins(0.05M);
    public static readonly Coins OneDollar = new Coins(1M);
    //add more properties like this
}