枚举分析.要锚定的字符串
本文关键字:字符串 枚举 | 更新日期: 2023-09-27 17:58:13
我有一个值为"Top;Left"
的字符串变量。是否可以轻松地将其解析为Control.Anchor
(而不使用if
)?
Enum.Parse
不起作用,因为Anchor
可以取一个值,例如Top;Left;
,但AnchorEnum
只能取Top
、Left
、Right
、Bottom
或None
。
使用String.Split
,使用Enum.TryParse
或Enum.Parse
分别解析它们中的每一个,然后使用OR
解析结果值。
解析它很容易,无需对每个选项进行迭代。
var s = "Top;Left";
s = s.Replace(";", ", ");
var e = Enum.Parse(typeof(AnchorStyles), s);
唯一的问题是它必须用逗号分隔,而不是分号。
没有直接的解析方法,但很容易编写这样的东西:
public static AnchorStyles Parse(string str)
{
return str.Split(';')
.Select(s => (AnchorStyles) Enum.Parse(typeof (AnchorStyles), s, true))
.Aggregate((a1, a2) => a1 | a2);
}
}
string value ="Top;Left";
var anchor =(System.Windows.Forms.AnchorStyles)Enum.Parse(typeof(System.Windows.Forms.AnchorStyles), value.Replace(";", " , "))