C# 如何将标准工作日与国旗进行比较

C# 如何将标准工作日与国旗进行比较,c#,datetime,dayofweek,C#,Datetime,Dayofweek,我有自己的DaysOfWeek标志枚举(有点) 我需要把每周的标准日和我的进行比较。我该怎么做呢?由于枚举使用的天数顺序与内置的DayOfWeek相同,所以只需使用DayOfWeek类型的变量作为2的指数,然后将其与枚举变量按位并用即可 类似这样的内容(这将检查枚举的Monday标志是否为1): MyDayOfWeek Days=MyDayOfWeek.周一| MyDayOfWeek.周五; DayOfWeek D=星期一的DayOfWeek; var Mask=1由于枚举使用的天数顺序与内置的

我有自己的DaysOfWeek标志枚举(有点)


我需要把每周的标准日和我的进行比较。我该怎么做呢?

由于枚举使用的天数顺序与内置的
DayOfWeek
相同,所以只需使用
DayOfWeek
类型的变量作为
2
的指数,然后将其与枚举变量按位并用即可

类似这样的内容(这将检查枚举的
Monday
标志是否为
1
):

MyDayOfWeek Days=MyDayOfWeek.周一| MyDayOfWeek.周五;
DayOfWeek D=星期一的DayOfWeek;

var Mask=1由于枚举使用的天数顺序与内置的
DayOfWeek
相同,因此只需使用
DayOfWeek
类型的变量作为
2
的指数,然后将其与枚举变量按位并用即可

类似这样的内容(这将检查枚举的
Monday
标志是否为
1
):

MyDayOfWeek Days=MyDayOfWeek.周一| MyDayOfWeek.周五;
DayOfWeek D=星期一的DayOfWeek;
var Mask=1感谢大家的帮助。
最后,我有了解决办法

带旗帜的Own DaysOfWeek:

[Flags]
public enum DaysOfWeek
{
    None = 0,
    Sunday = 1 << 0,
    Monday = 1 << 1,
    Tuesday = 1 << 2,
    Wednesday = 1 << 3,
    Thursday = 1 << 4,
    Friday = 1 << 5,
    Saturday = 1 << 6,
}
操场:

谢谢大家的帮助。 最后,我有了解决办法

带旗帜的Own DaysOfWeek:

[Flags]
public enum DaysOfWeek
{
    None = 0,
    Sunday = 1 << 0,
    Monday = 1 << 1,
    Tuesday = 1 << 2,
    Wednesday = 1 << 3,
    Thursday = 1 << 4,
    Friday = 1 << 5,
    Saturday = 1 << 6,
}

操场:

如果您像这样更改枚举:

[Flags]
public enum DayOfWeek
{
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6
}
您可以尝试以下方法:

class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        int mineInt = (int)mine;
        int cSharpInt = (int)cSharp;
        return mineInt == cSharpInt;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Sunday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        if (mine == DayOfWeek.Friday && cSharp == System.DayOfWeek.Friday       || 
            mine == DayOfWeek.Monday && cSharp == System.DayOfWeek.Monday       || 
            mine == DayOfWeek.Saturday && cSharp == System.DayOfWeek.Saturday   || 
            mine == DayOfWeek.Sunday && cSharp == System.DayOfWeek.Sunday       || 
            mine == DayOfWeek.Thursday && cSharp == System.DayOfWeek.Thursday   ||
            mine == DayOfWeek.Tuesday && cSharp == System.DayOfWeek.Tuesday     || 
            mine == DayOfWeek.Wednesday && cSharp == System.DayOfWeek.Wednesday)
            return true;

        return false;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Tuesday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
如果无法更改枚举,可以尝试以下操作:

class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        int mineInt = (int)mine;
        int cSharpInt = (int)cSharp;
        return mineInt == cSharpInt;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Sunday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        if (mine == DayOfWeek.Friday && cSharp == System.DayOfWeek.Friday       || 
            mine == DayOfWeek.Monday && cSharp == System.DayOfWeek.Monday       || 
            mine == DayOfWeek.Saturday && cSharp == System.DayOfWeek.Saturday   || 
            mine == DayOfWeek.Sunday && cSharp == System.DayOfWeek.Sunday       || 
            mine == DayOfWeek.Thursday && cSharp == System.DayOfWeek.Thursday   ||
            mine == DayOfWeek.Tuesday && cSharp == System.DayOfWeek.Tuesday     || 
            mine == DayOfWeek.Wednesday && cSharp == System.DayOfWeek.Wednesday)
            return true;

        return false;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Tuesday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}

如果按以下方式更改枚举:

[Flags]
public enum DayOfWeek
{
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6
}
您可以尝试以下方法:

class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        int mineInt = (int)mine;
        int cSharpInt = (int)cSharp;
        return mineInt == cSharpInt;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Sunday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        if (mine == DayOfWeek.Friday && cSharp == System.DayOfWeek.Friday       || 
            mine == DayOfWeek.Monday && cSharp == System.DayOfWeek.Monday       || 
            mine == DayOfWeek.Saturday && cSharp == System.DayOfWeek.Saturday   || 
            mine == DayOfWeek.Sunday && cSharp == System.DayOfWeek.Sunday       || 
            mine == DayOfWeek.Thursday && cSharp == System.DayOfWeek.Thursday   ||
            mine == DayOfWeek.Tuesday && cSharp == System.DayOfWeek.Tuesday     || 
            mine == DayOfWeek.Wednesday && cSharp == System.DayOfWeek.Wednesday)
            return true;

        return false;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Tuesday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
如果无法更改枚举,可以尝试以下操作:

class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        int mineInt = (int)mine;
        int cSharpInt = (int)cSharp;
        return mineInt == cSharpInt;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Sunday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}
class Program
{
    public static bool Equal(DayOfWeek mine, System.DayOfWeek cSharp)
    {
        if (mine == DayOfWeek.Friday && cSharp == System.DayOfWeek.Friday       || 
            mine == DayOfWeek.Monday && cSharp == System.DayOfWeek.Monday       || 
            mine == DayOfWeek.Saturday && cSharp == System.DayOfWeek.Saturday   || 
            mine == DayOfWeek.Sunday && cSharp == System.DayOfWeek.Sunday       || 
            mine == DayOfWeek.Thursday && cSharp == System.DayOfWeek.Thursday   ||
            mine == DayOfWeek.Tuesday && cSharp == System.DayOfWeek.Tuesday     || 
            mine == DayOfWeek.Wednesday && cSharp == System.DayOfWeek.Wednesday)
            return true;

        return false;
    }

    static void Main(string[] args)
    {

        DateTime dateTime = DateTime.Now;
        DayOfWeek dayOfWeek = DayOfWeek.Tuesday;

        bool areEqual = Equal(dayOfWeek, dateTime.DayOfWeek);
        Console.WriteLine(areEqual);
        Console.ReadKey();
    }
}


对于C#中2的计算能力,您还需要使用
1,按位AND不是必需的。左移
1
将创建一个只设置了一位的数字。@BenVoigt:使用两种语言可能会很混乱。这个来自visualbasic。谢谢你的更正。更新。@BenVoigt:你能建议如何避免争吵吗?他的枚举标记为
Flags
,可以设置多个位。您是否使用
MyDayOfWeek.Sunday
?对于C#中2的计算能力,您还需要使用
1,按位设置,这是不必要的。左移
1
将创建一个只设置了一位的数字。@BenVoigt:使用两种语言可能会很混乱。这个来自visualbasic。谢谢你的更正。更新。@BenVoigt:你能建议如何避免争吵吗?他的枚举标记为
标志
,可以设置多个位。您是否使用
MyDayOfWeek.Sunday
进行了测试?如果您定义“比较”以及希望结果是什么,这将非常有用。此比较是否返回
bool
int
?将您的
DayOfWeek
系统进行比较时。DayOfWeek
是严格测试是否相等,还是给定一个
系统。DayOfWeek
在您的
DayOfWeek
中设置了相应的标志,而不管其他标志的状态如何?还有,你试过什么?旁注,但是你确定周日=0吗?很难从集合中包括或排除星期日。@我有自己的枚举来创建天数组合,我需要定义的是DateTime。现在在这个组合中。希望返回
bool
。如果定义“比较”以及希望结果是什么,这将非常有用。此比较是否返回
bool
int
?将您的
DayOfWeek
系统进行比较时。DayOfWeek
是严格测试是否相等,还是给定一个
系统。DayOfWeek
在您的
DayOfWeek
中设置了相应的标志,而不管其他标志的状态如何?还有,你试过什么?旁注,但是你确定周日=0吗?很难从集合中包括或排除星期日。@我有自己的枚举来创建天数组合,我需要定义的是DateTime。现在在这个组合中。要返回
bool
。我正在使用我自己的DayOfWeek枚举和标志,将一周中的天数合并到一个变量中。使用flag时,您需要将值设置为2I的幂。我使用我自己的DayOfWeek枚举和flag,将一周中的天数合并到一个变量中。使用该标志时,需要将值设置为2的幂