2011-08-25 69 views
2

我将VB代码转换为C#问题与运营商在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 

并且它不正确ause不能运营商!这个枚举的操作数。

+0

出于好奇,你使用了什么样的转换工具? – jglouie

+0

这一个:http://www.developerfusion.com/tools/convert/vb-to-csharp/ – user278618

回答

4

按位运算符not~

7

使用~运算符来翻转位。

3

试试下面的不是

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

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