gpt4 book ai didi

c# - 要使用的最佳标志值(提示和良好实践)

转载 作者:太空狗 更新时间:2023-10-30 00:42:38 25 4
gpt4 key购买 nike

在学习 flag 技术时,我遇到了一些问题,因此我使用 C# 和 Enum 展示这个例子:

   [Flags]
enum PermissionTypes : byte
{
None = 0x0,
Read = 0x1,
Write = 0x2,
Modify = 0x4,
Delete = 0x8,
Create = 0x10,
All = Read | Write | Modify | Delete | Create
}

检查 hasFlag 属性:

if((value & mask) == mask) {...}

但是当 'hasFlag' 应用于 'None' 和 'Read' 时:

Denote x = Current_Permission_Setting,

x & PermissionTypes.None = always false
x & PermissionTypes.Read = always true IFF

(cont') IFF x = {ODD 字节值}


问题可以安全使用的完美标志值集是什么?


引用: Here's the full example .

最佳答案

正如@antlersoft 在评论中所说,您不能真正使用 NONE 作为位标志。
你的其余标志是有道理的。您确实需要使用 2 的幂来为每个标志获取 1 位。

无论如何,测试“Has READ and NONE”设置没有意义,因为 NONE 意味着 READ 未设置。

你用X的奇数值描述的问题似乎没有意义。如果设置了第 1 位,该值只会是奇数。如果您始终如一地使用您的标志,则只有当 READ 为真时才会设置位 1。

关于c# - 要使用的最佳标志值(提示和良好实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14383725/

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