【问题标题】:Operator as vs Enum.TryParse [duplicate]运算符 as vs Enum.TryParse [重复]
【发布时间】:2017-10-29 11:32:21
【问题描述】:

我有一个一般性问题。我有2个案例(方法Test1和Test2,我不知道最好的方法是什么(性能,忽略大小写,所有方面):

    public void Test1(object transcodingStatus)
    {
        string _transcodingStatus = transcodingStatus as string;
        if (!string.IsNullOrEmpty(_transcodingStatus))
        {
            if (_transcodingStatus.ToUpper() == AWSTranscoderStatusBindingModel.COMPLETED.ToString())
            {
                //DO LOGIC
            }
        }
    }

    public void Test2(object transcodingStatus)
    {
        if (transcodingStatus != null)
        {
            AWSTranscoderStatusBindingModel enumVale = AWSTranscoderStatusBindingModel.COMPLETED;
            if (Enum.TryParse(transcodingStatus.ToString(), false, out enumVale))
            {
                if (enumVale == AWSTranscoderStatusBindingModel.COMPLETED)
                {
                    //DO LOGIC
                }
            }
        }
    }

感谢所有帮助者:)

【问题讨论】:

  • 我很好奇为什么参数的类型是object。为什么不是AWSTranscoderStatusBindingModel?string
  • 无疑是第二个。 A)因为第一个不区分大小写的比较错误。 B)因为当存在现有方法时,几乎总是更好地使用它。表现?我猜你这里没有 MEASURED 问题
  • 如果你可以完全避免从字符串中解析枚举,它会更快。序列化器通常能够将枚举序列化为整数。

标签: c#


【解决方案1】:

在这种情况下,Enum.TryParse 比其他东西更有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2011-11-14
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多