【问题标题】:Putting array into Enum将数组放入枚举
【发布时间】:2014-05-15 10:32:27
【问题描述】:

这可能是一个愚蠢的问题,但是可以将数组放入 Enum 中吗?

public enum Owners { Me, Neutral, Enemy[] }

我的问题是,我事先不知道敌人的数量,所以我很想像Owners.Enemy[3] 一样使用它。这可能与 Enum 相关,还是我应该为所有者创建一个单独的类?

【问题讨论】:

  • 听起来你应该为敌人类型创建一个单独的枚举。
  • 枚举成员在编译时必须是已知的。如果你正在做的事情涉及编译时未知的东西,你不能直接将它映射到一个枚举。
  • 目前还不清楚Owners.Enemy[3] 的含义。我认为你需要重新考虑你的设计。
  • 正如已经回答的:不可能。这也是没有意义的。为什么 ?枚举的创建是为了让人类程序员可以阅读“我”、“中立”、“敌人”并立即知道它代表什么。无论你试图做什么都违背了枚举结构的逻辑。

标签: c# arrays enums


【解决方案1】:

您可以像这样为 Owners 枚举创建扩展方法:

static Enemy[] Enemies;
static Enemy getEnemy(this Owners owner,int index){
return Enemies[index];
}

【讨论】:

【解决方案2】:

枚举可能不适合您正在尝试的内容。它是不同值的编译时表示,帮助您用有意义的名称替换代码中的幻数。

不太了解您的应用程序,我认为您最好为每个人定义一个对象

var me = new Thingy();
var neutral = new Thingy();
var enemy1 = new Thingy();
var enemy2 = new Thingy();

并根据您认为合适的方式将适当的对象分配给该字段,例如

class Something
{
    public Thingy Owner { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 2013-01-17
    • 2010-11-09
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2011-03-18
    相关资源
    最近更新 更多