zoukankan      html  css  js  c++  java
  • C#类型转换工具类

    using System;
    
    namespace Com.AppCode.Extend
    {
        public static partial class Ext
        {
            #region 数值转换
            /// <summary>
            /// 转换为整型
            /// </summary>
            /// <param name="data">数据</param>
            public static int ToInt(this object data)
            {
                if (data == null)
                    return 0;
                if (data is Enum)
                    return (int)data;
    
                int result;
                var success = int.TryParse(data.ToString(), out result);
                if (success)
                    return result;
                try
                {
                    return Convert.ToInt32(ToDouble(data, 0));
                }
                catch (Exception)
                {
                    return 0;
                }
            }
    
            /// <summary>
            /// 转换为可空整型
            /// </summary>
            /// <param name="data">数据</param>
            public static int? ToIntOrNull(this object data)
            {
                if (data == null)
                    return null;
                int result;
                bool isValid = int.TryParse(data.ToString(), out result);
                if (isValid)
                    return result;
                return null;
            }
    
            /// <summary>
            /// 转换为双精度浮点数
            /// </summary>
            /// <param name="data">数据</param>
            public static double ToDouble(this object data)
            {
                if (data == null)
                    return 0;
                double result;
                return double.TryParse(data.ToString(), out result) ? result : 0;
            }
    
            /// <summary>
            /// 转换为双精度浮点数,并按指定的小数位4舍5入
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="digits">小数位数</param>
            public static double ToDouble(this object data, int digits)
            {
                return Math.Round(ToDouble(data), digits);
            }
    
            /// <summary>
            /// 转换为可空双精度浮点数
            /// </summary>
            /// <param name="data">数据</param>
            public static double? ToDoubleOrNull(this object data)
            {
                if (data == null)
                    return null;
                double result;
                bool isValid = double.TryParse(data.ToString(), out result);
                if (isValid)
                    return result;
                return null;
            }
    
            /// <summary>
            /// 转换为高精度浮点数
            /// </summary>
            /// <param name="data">数据</param>
            public static decimal ToDecimal(this object data)
            {
                if (data == null)
                    return 0;
                decimal result;
                return decimal.TryParse(data.ToString(), out result) ? result : 0;
            }
    
            /// <summary>
            /// 转换为高精度浮点数,并按指定的小数位4舍5入
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="digits">小数位数</param>
            public static decimal ToDecimal(this object data, int digits)
            {
                return Math.Round(ToDecimal(data), digits);
            }
    
            /// <summary>
            /// 转换为可空高精度浮点数
            /// </summary>
            /// <param name="data">数据</param>
            public static decimal? ToDecimalOrNull(this object data)
            {
                if (data == null)
                    return null;
                decimal result;
                bool isValid = decimal.TryParse(data.ToString(), out result);
                if (isValid)
                    return result;
                return null;
            }
    
            /// <summary>
            /// 转换为可空高精度浮点数,并按指定的小数位4舍5入
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="digits">小数位数</param>
            public static decimal? ToDecimalOrNull(this object data, int digits)
            {
                var result = ToDecimalOrNull(data);
                if (result == null)
                    return null;
                return Math.Round(result.Value, digits);
            }
    
            #endregion
    
            #region 日期转换
            /// <summary>
            /// 转换为日期
            /// </summary>
            /// <param name="data">数据</param>
            public static DateTime ToDate(this object data)
            {
                if (data == null)
                    return DateTime.MinValue;
                DateTime result;
                return DateTime.TryParse(data.ToString(), out result) ? result : DateTime.MinValue;
            }
    
            /// <summary>
            /// 转换为可空日期
            /// </summary>
            /// <param name="data">数据</param>
            public static DateTime? ToDateOrNull(this object data)
            {
                if (data == null)
                    return null;
                DateTime result;
                bool isValid = DateTime.TryParse(data.ToString(), out result);
                if (isValid)
                    return result;
                return null;
            }
    
            #endregion
    
            #region 布尔转换
            /// <summary>
            /// 转换为布尔值
            /// </summary>
            /// <param name="data">数据</param>
            public static bool ToBool(this object data)
            {
                if (data == null)
                    return false;
                bool? value = GetBool(data);
                if (value != null)
                    return value.Value;
                bool result;
                return bool.TryParse(data.ToString(), out result) && result;
            }
    
            /// <summary>
            /// 获取布尔值
            /// </summary>
            private static bool? GetBool(this object data)
            {
                switch (data.ToString().Trim().ToLower())
                {
                    case "0":
                        return false;
                    case "1":
                        return true;
                    case "":
                        return true;
                    case "":
                        return false;
                    case "yes":
                        return true;
                    case "no":
                        return false;
                    default:
                        return null;
                }
            }
    
            /// <summary>
            /// 转换为可空布尔值
            /// </summary>
            /// <param name="data">数据</param>
            public static bool? ToBoolOrNull(this object data)
            {
                if (data == null)
                    return null;
                bool? value = GetBool(data);
                if (value != null)
                    return value.Value;
                bool result;
                bool isValid = bool.TryParse(data.ToString(), out result);
                if (isValid)
                    return result;
                return null;
            }
    
            #endregion
    
            #region 字符串转换
            /// <summary>
            /// 转换为字符串
            /// </summary>
            /// <param name="data">数据</param>
            public static string ToString(this object data)
            {
                return data == null ? string.Empty : data.ToString().Trim();
            }
            #endregion
    
            /// <summary>
            /// 安全返回值
            /// </summary>
            /// <param name="value">可空值</param>
            public static T SafeValue<T>(this T? value) where T : struct
            {
                return value ?? default(T);
            }
            /// <summary>
            /// 是否为空
            /// </summary>
            /// <param name="value"></param>
            public static bool IsEmpty(this string value)
            {
                return string.IsNullOrWhiteSpace(value);
            }
            /// <summary>
            /// 是否为空
            /// </summary>
            /// <param name="value"></param>
            public static bool IsEmpty(this Guid? value)
            {
                if (value == null)
                    return true;
                return IsEmpty(value.Value);
            }
            /// <summary>
            /// 是否为空
            /// </summary>
            /// <param name="value"></param>
            public static bool IsEmpty(this Guid value)
            {
                if (value == Guid.Empty)
                    return true;
                return false;
            }
            /// <summary>
            /// 是否为空
            /// </summary>
            /// <param name="value"></param>
            public static bool IsEmpty(this object value)
            {
                if (value != null && !string.IsNullOrEmpty(value.ToString()))
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
    }
  • 相关阅读:
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十一)
    install ubuntu on Android mobile phone
    Mac OS, Mac OSX 与Darwin
    About darwin OS
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十)
    Linux下编译安装qemu和libvirt
    libvirt(virsh命令总结)
    深入浅出 kvm qemu libvirt
    自然语言交流系统 phxnet团队 创新实训 项目博客 (九)
    自然语言交流系统 phxnet团队 创新实训 项目博客 (八)
  • 原文地址:https://www.cnblogs.com/hofmann/p/11765738.html
Copyright © 2011-2022 走看看