zoukankan      html  css  js  c++  java
  • 【.NET / C#】SimpleConverter(数值文本互转工具类)

    C# 数值文本互转工具类

    using System;
    using System.ComponentModel;
    
    namespace System
    {
        public static class SimpleConverter
        {
    
            /// <summary>
            /// [ String | 数值字符串 ] -> [ ValueType | 数值 ]
            /// </summary>
            /// <typeparam name="T">[ ValueType | 数值类型 ]</typeparam>
            /// <param name="value">[ String | 数值字符串 ]</param>
            /// <exception cref="NotSupportedException"></exception>
            /// <returns></returns>
            public static T ToNumber<T>(string value) where T : struct
            {
                var cast = TypeDescriptor.GetConverter(typeof(T));
                if (cast != null) 
                {
                    return (T) cast.ConvertFromInvariantString(value);
                }
                return default(T);
            }
    
            /// <summary>
            /// [ String | 数值字符串 ] -> [ ValueType | 数值 ]
            /// </summary>
            /// <typeparam name="T">[ ValueType | 数值类型 ]</typeparam>
            /// <param name="value">[ String | 数值字符串 ]</param>
            /// <param name="def">[ DefaultValue | 默认数值 ]</param>
            /// <returns></returns>
            public static T ToNumber<T>(string value, T def) where T : struct
            {
                try
                {
                    var answer = ToNumber<T>(value);
                    return Equals(answer, default(T)) ? def : answer;
                }
                catch (NotSupportedException)
                {
                    return def;
                }
            }
    
            /// <summary>
            /// [ ValueType | 数值 ] -> [ String | 数值字符串 ]
            /// </summary>
            /// <typeparam name="T">[ ValueType | 数值类型 ]</typeparam>
            /// <param name="value">[ ValueType | 数值 ]</param>
            /// <exception cref="NotSupportedException"></exception>
            /// <returns></returns>
            public static string ToString<T>(T value) where T : struct
            {
                var cast = TypeDescriptor.GetConverter(typeof(T));
                if (cast != null)
                {
                    return cast.ConvertToInvariantString(value);
                }
                return Convert.ToString(value);
            }
    
            /// <summary>
            /// [ ValueType | 数值 ] -> [ String | 数值字符串 ]
            /// </summary>
            /// <typeparam name="T">[ ValueType | 数值类型 ]</typeparam>
            /// <param name="value">[ ValueType | 数值 ]</param>
            /// <param name="def">[ DefaultString | 默认数值字符串 ]</param>
            /// <returns></returns>
            public static string ToString<T>(T value, string def) where T : struct
            {
                try
                {
                    var answer = ToString<T>(value);
                    return String.IsNullOrEmpty(answer) ? def : answer;
                }
                catch (NotSupportedException)
                {
                    return def;
                }
            }
    
        }
    }
    
  • 相关阅读:
    JAVA使用POI如何导出百万级别数据
    Excel最多可存多少行,多少列?
    jvm参数调优
    迭代器相应型别
    指向NULL的类
    const T & 的适用范围
    函数前修饰const与函数名后修饰const
    继承中赋值函数的注意点
    string类的简要实现
    malloc/free与new/delete的不同及注意点
  • 原文地址:https://www.cnblogs.com/zhuzhongxing/p/14147107.html
Copyright © 2011-2022 走看看