Csharp/C#教程:运算符&&无法应用分享


运算符&&无法应用

我正在测试一个示例片段,我发现它是另一个问题的答案

然而,编译器正在吐出这个“运算符&&不能应用于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上有很多类似的问题,我点击了大部分内容,在我打字的时候,我的右边有一个很大的列表。 没有适用于我的情况,至少我能够看到答案和我的问题之间的关系。

你正在使用&& (条件AND,仅对bool操作数有效)而不是& (按位AND,对bool操作数或整数操作数有效) – 我怀疑你想要后者,你也应该使用括号,因为优先规则。 我也将参数名称更改为遵循.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; } 

我猜这是你想要的:

 (Mask & TestPermission) != 0 

所以,你需要:

上述就是C#学习教程:运算符&&无法应用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/948977.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

精彩推荐