【问题标题】:Convert Int32 to Bool将 Int32 转换为 Bool
【发布时间】:2016-12-13 15:55:20
【问题描述】:

我目前正在编写一个查看 SQL 代理作业的应用程序。我正在尝试将 FrequencyInterval 属性转换为 7 个布尔字段(每天一个)

我正在考虑对每个可能的组合使用 case 语句,但想知道是否有更有效的方法?

【问题讨论】:

  • 能否提供一些代码
  • 也许BitConverter 可以提供帮助?
  • 不是一个真正的答案,但为什么不创建一个自定义方法,就像为您转换它的 3 行代码?可能要容易得多。

标签: c#


【解决方案1】:

您不需要七个布尔变量,但您可以使用attribute Flags 定义一个枚举,其值等于为该属性定义的值。 然后将FrequencyInterval属性赋值给这个枚举类型的变量。

[Flags]
public enum frequencyDaysEnum
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64,
// You can also add these but they are not necessary
//    WeekDays = 62,
//    WeekEnds = 65,
//    EveryDay = 127
}

void Main()
{
    int value = 65; // <= this is the value of your property
    frequencyDaysEnum days = (frequencyDaysEnum)value;

    if(days.HasFlag(frequencyDaysEnum.Saturday))
        Console.WriteLine("It has frequency on Saturday");

    if (days.HasFlag(frequencyDaysEnum.Sunday))
        Console.WriteLine("It has frequency on Sunday");
}

【讨论】:

  • 读完这篇文章后,该页面上引用的 Weekdays 枚举是有意义的,所以我使用它而不是自己编写。非常感谢。
猜你喜欢
  • 2015-12-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
相关资源
最近更新 更多