如何解析一个空到空在枚举.parse

本文关键字:枚举 parse 一个 何解析 | 更新日期: 2023-09-27 18:09:01

这是我的代码:

return (Skills) Enum.Parse(typeof(Skills),  CSData[(int)cs].Requirement);

但由于有时没有要求(即值为null),我想在这种情况下解析值为null,我怎么能做到呢?

如何解析一个空到空在枚举.parse

问题是,枚举是不可空的值类型。因此,从逻辑上讲,你不能像你说的那样"将null解析为null"。

你能做的,是改变你的方法的返回类型为一个可空的Skills

public Skills? MyMethod(string str)
{
    return (str == null)
           ? null as Skills?
           : (Skills) Enum.Parse(typeof(Skills), str);
}

使用Enum。取而代之的是TryParse——它返回一个布尔值,告诉你解析是否成功,而不是抛出异常。然后您可以采取相应的行动。

作为dcastros答案的替代方案,您可以引入额外的enum值,例如Skills.Unknown,以避免在代码中进一步检查null。

return String.IsNullOrEmpty(str) ? Skills.Unknown : (Skills)Enum.Parse(typeof(Skills), str);