请帮忙!我试图弄清楚以下代码,但我无法理解它。有人能让我明白吗?特别是这段代码:
MyEnum d2 = (MyEnum)code.
我的代码:
public struct MyStruct
{
public bool HaveHours;
public List<int> Hours;
public List<int>Mins;
public MyStruct(string code) : this(((string.IsNullOrEmpty(code) == false) ? long.Parse(code) : -1)) { }
public MyStruct(long code)
{
this.HaveHours = false;
this.Hours = new List<int>();
this.Mins = new List<int>();
if (code != -1)
{
this.HaveHours = true;
MyEnum d2 = (MyEnum)code;
if ((d2 & MyEnum.h0) == MyEnum.h0) this.Hours.Add(0);
if ((d2 & MyEnum.h030) == MyEnum.h030) this.Mins.Add(0);
if ((d2 & MyEnum.h1) == MyEnum.h1) this.Hours.Add(1);
if ((d2 & MyEnum.h130) == MyEnum.h130) this.Mins.Add(1);
if ((d2 & MyEnum.h2) == MyEnum.h2) this.Hours.Add(2);
if ((d2 & MyEnum.h230) == MyEnum.h230) this.Mins.Add(2);
if ((d2 & MyEnum.h3) == MyEnum.h3) this.Hours.Add(3);
if ((d2 & MyEnum.h330) == MyEnum.h330) this.Mins.Add(3);
}
}
}
答案 0 :(得分:0)
标志枚举基本上用作二进制数(例如100110101),其中每个位都有意义。通过使用MyEnum(我假设),可以通过某些名称(例如h330)访问这些位形式。
当您将长数字转换为枚举时,您将一个数字转换为其二进制标志枚举(这只是您对机器的表示,一切都是二进制)。
其余代码根据枚举值检查某些标志是否打开(位值为1)
希望有所帮助。