下面哪个版本的代码是对的?

时间:2010-05-29 10:52:31

标签: c#

您好我在实用程序代码文件中找到了此函数:

版本1:

public static bool IsValidLong(string strLong)
{
    bool result = true;
    try
    {
        long tmp = long.Parse(strLong);
    }
    catch (Exception ex)
    {
        result = false;
    }
    return result;
}

我想用以下内容替换它(和其他类型的验证器):

版本2:

public static bool IsValidLong(string strLong)
{
    long l;
    return long.TryParse(strLong, out l);
}

哪个版本更好,为什么?

4 个答案:

答案 0 :(得分:3)

第一个存在是因为第二个没有在某一点(Int64.TryParse()被添加到.Net 2.0中)...使用第二个版本,为什么不利用框架在新版本中添加的功能如果它们可供你使用? :)

第二个更清晰,更精简,更可维护......我说这是一个更好的方法......以前没有。

另外,我相信TryParse()实际上并没有在内部抛出任何异常,因此在成功解析时会更慢,但比在解析失败的情况下抛出异常要快得多/便宜。 / p>

答案 1 :(得分:1)

我更喜欢第二个,因为它们都是相同的,第二个是较少的代码。

答案 2 :(得分:1)

在第二个版本中,FW为您封装了第一个版本中的行为。我会说这两个例子是等价的,但我会说第二个例子中的代码更清晰。

答案 3 :(得分:0)

版本2更好,在try / catch块中包装代码会影响性能,我认为TryParse()实现不会使用这种方法。