gpt4 book ai didi

c# - 这种类型的功能或技术有名称吗?

转载 作者:太空狗 更新时间:2023-10-29 18:17:14 25 4
gpt4 key购买 nike

嗨,我对编程有点陌生,更多的是一种爱好。我想知道以下逻辑或技术是否具有特定名称或术语。我当前的项目有 7 个复选框,一个对应一周中的每一天。我需要一个简单的方法来保存选中了哪些框。

下面是将选中的复选框保存到单个数字的方法。每个复选框的值都是最后一个复选框的两倍。当我想找出哪些复选框被选中时,我向后工作,看看我可以将总值除以复选框值多少次。

private int SetSelectedDays()
{
int selectedDays = 0;
selectedDays += (dayMon.Checked) ? 1 : 0;
selectedDays += (dayTue.Checked) ? 2 : 0;
selectedDays += (dayWed.Checked) ? 4 : 0;
selectedDays += (dayThu.Checked) ? 8 : 0;
selectedDays += (dayFri.Checked) ? 16 : 0;
selectedDays += (daySat.Checked) ? 32 : 0;
selectedDays += (daySun.Checked) ? 64 : 0;
return selectedDays;
}

private void SelectedDays(int n)
{
if ((n / 64 >= 1) & !(n / 64 >= 2))
{
n -= 64;
daySun.Checked = true;
}
if ((n / 32 >= 1) & !(n / 32 >= 2))
{
n -= 32;
daySat.Checked = true;
}
if ((n / 16 >= 1) & !(n / 16 >= 2))
{
n -= 16;
dayFri.Checked = true;
}
if ((n / 8 >= 1) & !(n / 8 >= 2))
{
n -= 8;
dayThu.Checked = true;
}
if ((n / 4 >= 1) & !(n / 4 >= 2))
{
n -= 4;
dayWed.Checked = true;
}
if ((n / 2 >= 1) & !(n / 2 >= 2))
{
n -= 2;
dayTue.Checked = true;
}
if ((n / 1 >= 1) & !(n / 1 >= 2))
{
n -= 1;
dayMon.Checked = true;
}
if (n > 0)
{
//log event
}
}

该方法可以很好地满足我的需要,但是,如果您确实看到另一种方法或更好的写作方式,我会对您的建议感兴趣。

最佳答案

其他人提到了位掩码,但我想我会向您展示一种简化代码的方法。

daySun.Checked = (n & 64) == 64;
daySat.Checked = (n & 32) == 32;
dayFri.Checked = (n & 16) == 16;
dayThu.Checked = (n & 8) == 8;
dayWed.Checked = (n & 4) == 4;
dayTue.Checked = (n & 2) == 2;
dayMon.Checked = (n & 1) == 1;

关于c# - 这种类型的功能或技术有名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com