越来越多的优化解析…在c#

本文关键字:优化 越来越多 | 更新日期: 2023-09-27 18:12:48

我有下面的c#代码解析…你认为这是最优化的还是我应该使用通用方法或优化这些函数本身?

public static bool GetDBBool(object value)
{
    var result = false;
    if (value != null && string.IsNullOrEmpty(value.ToString()) == false)
        bool.TryParse(value.ToString(), out result);
    return result;
}
public static int GetDBInt(object value)
{
    var result = -999;
    if (value != null && string.IsNullOrEmpty(value.ToString()) == false)
        int.TryParse(value.ToString(), out result);
    return result;
}
public static double GetDBDouble(object value)
{
    var result = -999.00;
    if (value != null && string.IsNullOrEmpty(value.ToString()) == false)
        double.TryParse(value.ToString(), out result);
    return result;
}
public static DateTime GetDBDate(object value)
{
    var result = DateTime.Now;
    if (value != null && string.IsNullOrEmpty(value.ToString()) == false)
        DateTime.TryParse(value.ToString(), out result);
    return result;
}
public static DateTime? GetDBNullableDate(object value)
{
    DateTime date;
    if (value != null && string.IsNullOrEmpty(value.ToString()) == false)
        return DateTime.TryParse(value.ToString(), out date) ? date : (DateTime?)null;
    else
        return null;
}

越来越多的优化解析…在c#

没有什么可以优化的了。我怀疑THIS是程序中最慢的地方。

但是你的空值有点奇怪。-999的数字?DateTime.Now为DateTime?您确定这不会在其他代码中造成问题吗?这些都是很正常的值这意味着其他代码将无法区分你是有一个空值,还是一个实际值。这个默认值对于其他代码可能是错误的。

如果是我,我会用0表示整数,用DateTime.MinValue表示DateTime。或者更好的做法是——一直使用可空元素

"== false"不是很好读。使用!相反。

如果"object value"已经是期望的类型(例如DateTime),将其转换为字符串然后再转换回来会更慢。

我会写

if (value is DateTime) return (DateTime)value;

我不会使用var result = -999;作为返回值。

如果转换失败,可以返回Int32。MinValue(优于-999)或者宁可为空。

也许你也想检查DBNull.Value?首先我会检查null和DBNull。值,然后" Value is DateTime"检查最后一件事是DateTime. tryparse