C# 中的运算符问题

发布于 2024-12-01 13:06:10 字数 992 浏览 1 评论 0原文

我正在将 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 运算符!到该枚举的操作数。

I'm converting vb code to c#

There is enum from telerik library:

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,
    }
}

and code in vb is

cal.AvailableViewModes = cal.AvailableViewModes And Not AvailableViewModes.All

Converter returns me

cal.AvailableViewModes = cal.AvailableViewModes & !AvailableViewModes.All

and it's not correct because cannot applu operator ! to opperand of this enum.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最美不过初阳 2024-12-08 13:06:10

使用 ~ 运算符翻转位。

Use the ~ operator to flip the bits.

心碎无痕… 2024-12-08 13:06:10

按位not 运算符是~

The bitwise not operator is ~.

傲性难收 2024-12-08 13:06:10

请尝试以下

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

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

Try the following instead

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

The converter is having a problem here because Not in VB.Net has two purposes: Boolean and bitwise. Which version is used depends on the type of the expression being targeted. Since Not is being used on a numeric value in the VB.Net code it's actually using the bitwise version. In C# the ~ operator is the equivalent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文