c#中的运算符问题

时间:2011-08-25 15:52:35

标签: c# vb.net operators vb.net-to-c#

我正在将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操作员!对这个枚举的反对意见。

3 个答案:

答案 0 :(得分:7)

使用~运算符翻转位。

答案 1 :(得分:4)

按位not运算符为~

答案 2 :(得分:3)

请尝试以下

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

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