/// <summary> /// 数据类型转换,静态类 /// </summary> public static class Parse { #region string /// <summary>转为字符串,若 obj 为 null,则返回""</summary> /// <param name="obj"></param> /// <returns></returns> public static string ToString(object obj) { if (obj == null) return ""; return obj.ToString(); } /// <summary>转为字符串,若 obj 为 null,则返回null</summary> /// <param name="obj"></param> /// <returns></returns> public static string ToStringN(object obj) { if (obj == null) return null; return obj.ToString(); } #endregion #region int /// <summary>尝试转为 int 型,若转换失败则返回 0</summary> /// <param name="obj">参数</param> /// <returns></returns> public static int ToInt(object obj) { int i = 0; ToInt(obj, out i); return i; } /// <summary>尝试转为 int 型,若转换失败则结果为 0</summary> /// <param name="obj">参数</param> /// <param name="msg">转换结果</param> /// <returns>失败原因</returns> public static string ToInt(object obj, out int result) { if (obj == null) { result = 0; return "参数obj为null。"; } else { try { result = int.Parse(ToString(obj)); return ""; } catch (Exception e) { result = 0; return e.Message; } } } /// <summary>使用 int.TryParse 方法来尝试转换 int 型,若转换失败则返回 0</summary> /// <param name="obj">待转换参数</param> /// <returns></returns> public static int TryInt(object obj) { int i = 0; int.TryParse(ToString(obj), out i); return i; } /// <summary>使用 int.TryParse 方法来尝试转换 int 类型,若转换失败则返回默认值</summary> /// <param name="obj">待转换参数</param> /// <param name="def">默认值</param> /// <returns></returns> public static int TryInt(object obj, int def) { if (obj == null) return def; int.TryParse(ToString(obj), out def); return def; } /// <summary>使用 int.TryParse 方法来尝试转为 int? 型,若 obj 为 null,则返回 null 值</summary> /// <param name="obj">待转换参数</param> /// <param name="realnull">true: 若返回 null 值仅仅是因为 obj 为 null,转换失败将返回 0;false: 若返回 null 值可能是转换失败的结果</param> /// <returns></returns> public static int? TryInt(object obj, bool realnull) { if (obj == null) return null; int i = 0; if (int.TryParse(ToString(obj), out i) || realnull) { return i; } else { return null; } } #endregion #region double /// <summary>尝试转为 double 型,若转换失败则返回 0</summary> /// <param name="obj">参数</param> /// <returns></returns> public static double ToDouble(object obj) { double i = 0.00; ToDouble(obj, out i); return i; } /// <summary>尝试转为 double 型,若转换失败则结果为 0</summary> /// <param name="obj">参数</param> /// <param name="msg">转换结果</param> /// <returns>失败原因</returns> public static string ToDouble(object obj, out double result) { if (obj == null) { result = 0.00; return "参数obj为null。"; } else { try { result = double.Parse(ToString(obj)); return ""; } catch (Exception e) { result = 0.00; return e.Message; } } } /// <summary>使用 double.TryParse 方法来尝试转换 double 型,若转换失败则返回 0</summary> /// <param name="obj">待转换参数</param> /// <returns></returns> public static double TryDouble(object obj) { double i = 0.00; double.TryParse(ToString(obj), out i); return i; } /// <summary>使用 double.TryParse 方法来尝试转换 double 类型,若转换失败则返回默认值</summary> /// <param name="obj">待转换参数</param> /// <param name="def">默认值</param> /// <returns></returns> public static double TryDouble(object obj, double def) { if (obj == null) return def; double.TryParse(ToString(obj), out def); return def; } /// <summary>使用 double.TryParse 方法来尝试转为 double? 型,若 obj 为 null,则返回 null 值</summary> /// <param name="obj">待转换参数</param> /// <param name="realnull">true: 若返回 null 值仅仅是因为 obj 为 null,转换失败将返回 0;false: 若返回 null 值可能是转换失败的结果</param> /// <returns></returns> public static double? TryDouble(object obj, bool realnull) { if (obj == null) return null; double i = 0.00; if (double.TryParse(ToString(obj), out i) || realnull) { return i; } else { return null; } } #endregion #region bool /// <summary>尝试转为 bool 型</summary> /// <param name="obj"></param> /// <returns></returns> public static bool ToBool(object obj) { bool i = false; ToBool(obj, out i); return i; } /// <summary>尝试转为 bool 型,并返回失败原因</summary> /// <param name="obj">待转换参数</param> /// <param name="result">转换结果</param> /// <returns>失败原因</returns> public static string ToBool(object obj, out bool result) { if (obj == null) { result = false; return "参数obj为null"; } else { try { result = bool.Parse(obj.ToString()); return ""; } catch (Exception e) { result = false; return e.Message; } } } /// <summary>使用 bool.TryParse 方法来尝试转换 bool 型</summary> /// <param name="obj"></param> /// <returns></returns> public static bool TryBool(object obj) { bool i = false; bool.TryParse(ToString(obj), out i); return i; } #endregion #region DateTime /// <summary>使用 DateTime.TryParse 方法来尝试转为 DateTime 型,若失败则返回 1900-01-01 00:00:00</summary> /// <param name="obj"></param> /// <returns></returns> public static DateTime TryDateTime(object obj) { DateTime i = new DateTime(1900, 1, 1, 0, 0, 0); DateTime.TryParse(ToString(obj), out i); return i; } /// <summary>使用 DateTime.TryParse 方法来尝试转为 DateTime? 型,若 obj 为 null,则返回 null 值</summary> /// <param name="obj">待转换的参数</param> /// <param name="realnull">true: 若返回 null 值仅仅是因为 obj 为 null,转换失败将返回 1900-01-01 00:00:00;false: 若返回 null 值可能是转换失败的结果</param> /// <returns></returns> public static DateTime? TryDateTime(object obj, bool realnull) { if (obj == null) return null; DateTime i = new DateTime(1900, 1, 1, 0, 0, 0); if (DateTime.TryParse(ToString(obj), out i) || realnull) { return i; } else { return null; } } #endregion }