2011-08-25 53 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#中,~運算符是等效的。