Enum.TryParse的非常基本的使用不起作用

时间:2013-07-01 08:57:57

标签: c#

我找到了一个非常基本的代码,如下所述,我无法在c#windows Forms解决方案中使用它。我收到了错误:

  • 'System.Enum.TryParse(string,out string)'的最佳重载方法匹配有一些无效的参数

  • 参数1:无法从'System.Type'转换为'string'

    public enum PetType
    {
        None,
        Cat = 1,
        Dog = 2
    }
    
    string value = "Dog";
    PetType pet = (PetType)Enum.TryParse(typeof(PetType), value);
    
    if (pet == PetType.Dog)
    {
        ...
    }
    

我不明白问题出在哪里。错误全部在Enum.TryParse行。有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:13)

从文档中可以看出,Enum.TryParse<TEnum>是一个返回布尔属性的泛型方法。您使用不正确。它使用out参数来存储结果:

string value = "Dog";
PetType pet;
if (Enum.TryParse<PetType>(value, out pet))
{
    if (pet == PetType.Dog)
    {
        ...
    }
}
else
{
    // Show an error message to the user telling him that the value string
    // couldn't be parsed back to the PetType enum
}

答案 1 :(得分:4)

首先要注意的是,TryParse会返回一个bool而不是枚举的Type

out参数必须指向Type的{​​{1}}变量。

答案 2 :(得分:2)

我认为您使用Enum.Parse:

 PetType pet = (PetType)Enum.Parse(typeof(PetType), value);

如果解析成功,TryParse只返回true,否则返回false。