我正在将vb代码转换为c#
来自telerik库的枚举:
namespace Telerik.Windows.Controls
{
// Summary:
// Provides flags for enumerating the ViewModes supported by Telerik.Windows.Controls.RadScheduler.
[Flags]
public enum AvailableViewModes
{
// Summary:
// Enables Day view.
Day = 1,
//
// Summary:
// Enables Week view.
Week = 2,
//
// Summary:
// Enables Month view.
Month = 4,
//
// Summary:
// Enables Timeline view.
Timeline = 8,
//
// Summary:
// Enables All views.
All = 15,
}
}
和vb中的代码是
cal.AvailableViewModes = cal.AvailableViewModes And Not AvailableViewModes.All
转发器给我回复
cal.AvailableViewModes = cal.AvailableViewModes & !AvailableViewModes.All
并且它不正确,因为不能applu操作员!对这个枚举的反对意见。
答案 0 :(得分:7)
使用~
运算符翻转位。
答案 1 :(得分:4)
按位not
运算符为~
。
答案 2 :(得分:3)
请尝试以下
cal.AvailableViewModes = cal.AvailableViewModes & (~AvailableViewModes.All)
转换器在这里遇到问题,因为VB.Net中的Not
有两个目的:布尔和按位。使用的版本取决于要定位的表达式的类型。由于Not
用于VB.Net代码中的数值,因此它实际上使用的是按位版本。在C#中,~
运算符是等价的。