Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用复数位掩码显示串行项_C# - Fatal编程技术网

C# 使用复数位掩码显示串行项

C# 使用复数位掩码显示串行项,c#,C#,我需要根据与这些天相关联的数字,创建一个显示序列术语的方法 所以,我为自己的每一天(学期)设定一个具体的数字 星期一=1,星期一=2,星期二=4,星期三=8,星期四=16,星期五=32,星期六=64 如果用户选择了所有工作日,如周一至周五=62, 或周末周六-周日=65 我必须开始在学期的那些日子里每周展示这个方法 在日历中显示术语的当前代码 var terminDates = dataAccess.GetTerminDate(personal.LPE_Nr, date, Dat

我需要根据与这些天相关联的数字,创建一个显示序列术语的方法

所以,我为自己的每一天(学期)设定一个具体的数字

星期一=1,星期一=2,星期二=4,星期三=8,星期四=16,星期五=32,星期六=64

如果用户选择了所有工作日,如周一至周五=62, 或周末周六-周日=65

我必须开始在学期的那些日子里每周展示这个方法

在日历中显示术语的当前代码

        var terminDates = dataAccess.GetTerminDate(personal.LPE_Nr, date, DateTime.DaysInMonth(date.Year, date.Month));

        for (int i = 0; i < terminDates.Count; i++)
        {
            T_TERMINE _TERMINE = new T_TERMINE();
            List<T_TERMINE> terminList = dataAccess.GetListTermins(personal.LPE_Nr, terminDates[i]);
            string serId = null;
            foreach (var termin in terminList)
            {
                _TERMINE.TER_Betreff = termin.TER_Betreff;
                _TERMINE.TER_ID = termin.TER_ID;
                serId = termin.TER_TRS_ID;
            }
            List<T_TERMINSERIE> serieTermins = dataAccess.GetSerieTermins(serId);
            T_TERMINSERIE _TERMINSERIE = new T_TERMINSERIE();
            foreach (var ser_termin in serieTermins)
            {
                _TERMINSERIE.TRS_StartZeit = ser_termin.TRS_StartZeit;
                _TERMINSERIE.TRS_EndZeit = ser_termin.TRS_EndZeit;
                _TERMINSERIE.TRS_TagWoche = ser_termin.TRS_TagWoche; //(16)here I get the number of the bit of the mask
                _TERMINSERIE.TRS_StartDatum = ser_termin.TRS_StartDatum;
            }
           /* how now to include method to make that custom event appear 
            whenever the method renders, me now CustomEvent is only 
           displayed for the first time, how to include it and Event for each time the method finds that day in a single week?*/
           //FindNextDay()?
            CustomEvent ce = new CustomEvent() { IgnoreTimeComponent = true,
                Date = terminDates[i],
                EventText = _TERMINE.TER_Betreff,
                EventColor = Color.BlueViolet };
            if (!generatedEvents.Any(x => x.Date == ce.Date))
            {
                calendar1.AddEvent(ce);
                generatedEvents.Add(ce);
            }
        }
var terminDates=dataAccess.GetTerminDate(personal.LPE_Nr,date,DateTime.DaysInMonth(date.Year,date.Month));
对于(int i=0;ix.Date==ce.Date))
{
日历1.附录(ce);
生成事件。添加(ce);
}
}
现在最重要的是基于我从基中读取的数字的方法,我指的是枚举中的数字。 每周重复这个学期

   [Flags]
        enum DaysBitMask { Sun = 1, Mon = 2, Tues = 4, Wed = 8, Thu = 16, Fri = 32, Sat = 64 }
        static DayOfWeek FindNextDay(DaysBitMask mask, DayOfWeek currentDay)
        {
            DayOfWeek dayCursor = currentDay;
            int counter = 0;
            do
            {
                int cursorMask = 0x01 << (int)dayCursor;
                int operationResult = (cursorMask & (int)mask);
                if (operationResult > 0)
                    return dayCursor;

                dayCursor = (DayOfWeek)(((int)dayCursor + 1) % 7);
                counter++;
            }
            while (counter < 7);

            throw new InvalidOperationException("Wrong flow. We shouldn't be here");
        }
[标志]
枚举DaysBitMask{Sun=1,Mon=2,Tues=4,Wed=8,Thu=16,Fri=32,Sat=64}
静态DayOfWeek FindNextDay(DaysBitMask掩码,DayOfWeek currentDay)
{
DayOfWeek dayCursor=当前日期;
int计数器=0;
做
{
int cursorMask=0x01(0)
返回日期游标;
dayCursor=(DayOfWeek)((int)dayCursor+1)%7);
计数器++;
}
而(计数器<7);
抛出新的InvalidOperationException(“错误的流,我们不应该在这里”);
}
这是我目前设计的代码,它不起作用,请您纠正我的方法“FindNextDay”,并告诉我如何应用它来正确显示术语。谢谢大家的时间。

请尝试下面的代码

    [Flags]
    enum DaysBitMask { Sun = 1, Mon = 2, Tues = 4, Wed = 8, Thu = 16, Fri = 32, Sat = 64 }

    static DayOfWeek FindNextDay(DaysBitMask mask, DayOfWeek currentDay)
    {
        DayOfWeek dayCursor = currentDay;

        for (int counter = 0; counter < 7; counter++)
        {
            int cursorMask = 0x01 << (int)dayCursor;
            int operationResult = (cursorMask & (int)mask);
            if (operationResult > 0)
                return dayCursor;

            dayCursor = (DayOfWeek)(((int)dayCursor + 1) % 7);
        }

        throw new InvalidOperationException("We shouldn't be here");
    }
[标志]
枚举DaysBitMask{Sun=1,Mon=2,Tues=4,Wed=8,Thu=16,Fri=32,Sat=64}
静态DayOfWeek FindNextDay(DaysBitMask掩码,DayOfWeek currentDay)
{
DayOfWeek dayCursor=当前日期;
用于(int计数器=0;计数器<7;计数器++)
{
int cursorMask=0x01(0)
返回日期游标;
dayCursor=(DayOfWeek)((int)dayCursor+1)%7);
}
抛出新的InvalidOperationException(“我们不应该在这里”);
}

你怎么了
FindNextDay
方法?@RomanKoliada对,我需要在这一天找到一周我不完全清楚
FindNextDay
应该做什么;你能举例说明所需的输入和输出吗?@steve16351我想知道,如果术语设置为9.05星期四(daysBit Mask(星期四=16)),我想在16.05、23.05重复它。对不起,我还是不明白-你把
currentDay
作为
DayOfWeek
传递,但是你怎么知道“下一个星期四”从那以后-这不是一个
日期时间吗
?谢谢你的帖子。然后如何为每个新事件显示此方法?我总是只为DaysBitMask号码从基部提取,我更改了代码。@lasta,我不确定我是否遵循了这个想法。我在代码中也没有看到使用FindNextDay方法的情况。我的问题是该方法本身的使用,因为我从数据库中获取这些天的值,这些值与DaysBitMask枚举中的值相同。这是一个例子,我可以邀请这个方法在它找到新的一天时,将这个词设置为第一个词。我不明白这个想法。您设计的方法是基于当前一周的一天和掩码(也包括一周的几天)获取下一周的第二天。我看不出为什么要用这个方法来解决你的任务(这是关于日期,而不是一周中的几天)。我更正了代码,我在需要的评论中写道