【问题标题】:c# - is this code possible?c# - 这个代码可能吗?
【发布时间】:2015-08-11 08:25:56
【问题描述】:

我玩一个游戏,我有一个 c# 编写的源代码,我正在尝试发出一个命令。假设我有这些常量:

public class Flags {
    public const ulong
        Normal = 0x0,
        FlashingName = 0x1,
        Dizzy = 1UL << 58,
        DivineShield = 1UL << 57,
        Poisoned = 0x2
}

我想试试这样的命令:

case "addflag":{
    client.Entity.AddTopStatus(Update.Flags.(Data[1]), DateTime.Now.AddDays(1), false);
    break;
}

在游戏中我会输入@addflag Dizzy(dizzy 代替常量中的 (data[1])),有点像命令是:

client.Entity.AddTopStatus(Update.Flags.Dizzy, DateTime.Now.AddDays(1), false);

但由于 (data[1]) 在那里,我可以通过命令来完成,而不是直接调用它。我可以选择任何常量,而不是单独调用每个常量。

此代码中出现错误,但这是意料之中的。有什么办法可以做到这一点吗? (我希望你们能理解我,我对 c# 不是很好,如果这令人困惑,请见谅)

【问题讨论】:

  • Flags 看起来更像是Enum (尽管据我所知,这有很多不同类型的项目),在这种情况下,它变成了如何获取枚举密钥的问题名字..

标签: c# command constants


【解决方案1】:

Flags 设为enum,然后使用Enum.Parsedata[1] 转换为适当的标志。

public enum Flags : ulong 
{

        Normal = 0x0,
        FlashingName = 0x1,
        Dizzy = 1UL << 58,
        DivineShield = 1UL << 57,
        Poisoned = 0x2
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多