代码之家  ›  专栏  ›  技术社区  ›  GrayedFox

我可以根据字符串数组分配枚举吗?

  •  0
  • GrayedFox  · 技术社区  · 4 年前

    我有一个像这样的游戏结构:

    using System;
    
    public readonly struct Target
    {
        public Target((int Min, int Max) range, string[] targetTypes)
        {
            Range = range;
            TargetType = ParseTypes(targetTypes);
        }
        public (int Min, int Max) Range { get; }
        public TargetTypes TargetType { get; }
        [Flags]
        public enum TargetTypes { None = 0, Self = 1, Enemy = 2, Player = 4, Character = 8, Area = 16 }
    }
    

    我想把字符串数组中的所有值转换成一个枚举(而不是一个枚举值数组,我相信这正是 this question

    问题是一个目标可以有多种类型。我认为这不是一个很好的反枚举模式,但我认为这是一个很好的反枚举模式。

    我喜欢这个整体 enumeration types as bit flags thing

    是的,我控制输入,很高兴听到我为什么/如何做这个不同的-谢谢你的时间!

    2 回复  |  直到 4 年前
        1
  •  1
  •   Anu Viswan    4 年前

    你可以用下面的。

    TargetType = (TargetTypes)Enum.Parse(typeof(TargetTypes),string.Join(",",targetTypes));
    
    

    的第二个参数枚举.解析接受表示枚举的单个值/常量或由逗号(,)分隔的命名常量或基础值列表。

        2
  •  0
  •   GrayedFox    4 年前

    谢谢你 @asawyer

    转换的名称或数值的字符串表示形式 一个或多个 等效枚举对象的枚举常量。

    TargetType = (TargetTypes) Enum.Parse(typeof(TargetTypes), string.Join(",", targetTypes));