gpt4 book ai didi

C# 相当于 "Not MyEnum.SomeValue"

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

我正在尝试将一些 VB.net 代码转换为 C#。我使用 SharpDevelop 来完成繁重的工作;但它生成的代码在某些枚举操作上出现问题,我不确定如何手动修复它。

原始 VB.net 代码:

Enum ePlacement
Left = 1
Right = 2
Top = 4
Bottom = 8
TopLeft = Top Or Left
TopRight = Top Or Right
BottomLeft = Bottom Or Left
BottomRight = Bottom Or Right
End Enum

Private mPlacement As ePlacement

''...

mPlacement = (mPlacement And Not ePlacement.Left) Or ePlacement.Right

生成的 C# 代码:

public enum ePlacement
{
Left = 1,
Right = 2,
Top = 4,
Bottom = 8,
TopLeft = Top | Left,
TopRight = Top | Right,
BottomLeft = Bottom | Left,
BottomRight = Bottom | Right
}

private ePlacement mPlacement;

//...

//Generates CS0023: Operator '!' cannot be applied to operand of type 'Popup.Popup.ePlacement'
mPlacement = (mPlacement & !ePlacement.Left) | ePlacement.Right;

Resharper 建议将 [Flags] 属性添加到枚举;但这样做不会影响错误。

最佳答案

在 VB 中,Not 用于逻辑非和按位非。

在 C# 中,! 是 bool NOT 而 ~ 是按位 NOT。

所以只需使用:

mPlacement = (mPlacement & ~ePlacement.Left) | ePlacement.Right;

关于C# 相当于 "Not MyEnum.SomeValue",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275895/

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