C# c语言中的运算符问题#

C# c语言中的运算符问题#,c#,vb.net,operators,vb.net-to-c#,C#,Vb.net,Operators,Vb.net To C#,我正在将vb代码转换为c# telerik库中有enum: namespace Telerik.Windows.Controls { // Summary: // Provides flags for enumerating the ViewModes supported by Telerik.Windows.Controls.RadScheduler. [Flags] public enum AvailableViewModes {

我正在将vb代码转换为c#

telerik库中有enum:

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

这是不正确的,因为不能应用运算符!反对这个枚举

使用
~
运算符翻转位。

按位
运算符为
~
请尝试以下操作

cal.AvailableViewModes = cal.AvailableViewModes & (~AvailableViewModes.All)

转换器在这里出现问题,因为VB.Net中的
Not
有两个用途:布尔和按位。使用哪个版本取决于目标表达式的类型。由于VB.Net代码中的数值使用了
Not
,因此实际上使用的是按位版本。在C#中,
~
运算符是等价的

出于好奇,您正在使用什么转换工具?此工具: