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
}