gpt4 book ai didi

c# - 无法应用运算符 &&

转载 作者:太空狗 更新时间:2023-10-29 22:12:31 24 4
gpt4 key购买 nike

我正在测试我在 another Question 上找到的作为答案的示例片段

然而,编译器吐出“运算符 && 不能应用于 long 和 bool 类型的操作数”。为什么要这样做?当我阅读代码时,它说“如果掩码和权限大于 0,则返回成功 bool”

我读错了吗?

(另外,没有人说它是一个坏例子,所以我希望它能起作用。并不是说我是一个复制粘贴编码器)

bool CheckMask( long Mask, long TestPermission ) {
return Mask && TestPermission > 0;
}

long mask = 4611686844973976575;

const long MASK_ViewListItems = 0x0000000000000001;
bool HasPermission_ViewListItems = CheckMask(mask, MASK_ViewListItems);
// HasPermission_ViewListItems is true

const long MASK_UseClientIntegration = 0x0000001000000000;
bool HasPermission_UseClientIntegration = CheckMask(mask, MASK_UseClientIntegration);
// HasPermission_UseClientIntegration is false

在 StackOverflow 上有很多类似的问题,我已经点击了其中的大部分,在我输入的时候右边有一个很大的列表。没有一个适用于我的情况,至少我能够看到答案与我的问题之间的关系。

最佳答案

您正在使用 && (conditional AND, only valid for bool operands)而不是 & (bitwise AND, valid for bool operands or integer operands) - 我怀疑您想要后者,并且由于优先规则,您还应该使用方括号。我也会更改参数名称以遵循 .NET 命名约定 - 并将其设为静态,因为它不依赖于任何状态:

static bool CheckMask(long mask, long testPermission)
{
return (mask & testPermission) > 0;
}

您可能还想更改为使用枚举而不是 long:

[Flags]
public enum Permissions
{
ViewListItems = 1 << 0,
...
UseClientIntegration = 1 << 9
}

static bool CheckMask(Permissions mask, Permissions testPermission)
{
return (mask & testPermission) != 0;
}

关于c# - 无法应用运算符 &&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103412/

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