5
私はVB.netコードをC#に変換しようとしています。私はSharpDevelopを使って重労働をしました。生成されたコードはenum操作の一部を破っているので、手動で修正する方法がわかりません。"Not MyEnum.SomeValue"に相当する#
オリジナル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#コード:Resharperのは、列挙に[Flags]
属性を追加することを示唆している
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;
。そうしてもエラーには影響しません。
でも右演算子で、あなたはまだ[フラグ]属性を持つ必要があります。 – plinth
Sharpdevelopで報告されたバグ:http://community.sharpdevelop.net/forums/p/16388/44685.aspx –