gpt4 book ai didi

c# - 在最终不需要计算器的情况下将枚举定义为 2 的标志/幂的任何技巧?

转载 作者:IT王子 更新时间:2023-10-29 03:49:11 30 4
gpt4 key购买 nike

我知道我可以乘法,但作为懒惰的编程我不想。

有没有人设计出一些魔法来自动将枚举编号为 2 的幂?

这里是我只是为了让它具体化的例子:

[Flags]
private enum Targets : uint
{
None = 0,
Campaigns = 1,
CampaignGroups = 2,
Advertisers = 4,
AdvertiserGroups = 8,
AffiliateGroups = 16,
Affiliates = 32,
Creatives = 64,
DetailedLeads = 128,
DetailedSales = 256,
ProgramLeads = 512,
CreativeDeployments = 1024,
CampaignCategories = 2048,
Payouts = 4096,
All = uint.MaxValue
}

最佳答案

将值写入移位后的位,让编译器进行计算:

[Flags]
private enum Targets : uint
{
None = 0,
Campaigns = 1,
CampaignGroups = 2 << 0,
Advertisers = 2 << 1,
AdvertiserGroups = 2 << 2,
AffiliateGroups = 2 << 3,
Affiliates = 2 << 4,
Creatives = 2 << 5,
DetailedLeads = 2 << 6,
DetailedSales = 2 << 7,
ProgramLeads = 2 << 8,
CreativeDeployments = 2 << 9,
CampaignCategories = 2 << 10,
Payouts = 2 << 11,
// etc.
}

James 的建议也很好。事实上,我更喜欢这种方式。你也可以这样写:

[Flags]
private enum Targets : uint
{
None = 0,
Campaigns = 1 << 0,
CampaignGroups = 1 << 1,
Advertisers = 1 << 2,
AdvertiserGroups = 1 << 3,
AffiliateGroups = 1 << 4,
// etc.
}

关于c# - 在最终不需要计算器的情况下将枚举定义为 2 的标志/幂的任何技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558621/

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