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 Scanner
    Java 继承
    什么叫异常?什么叫错误? 如何捕获异常? 如何抛出异常? 说说finally和final的区别! 什么是JDK?什么是JRE?说说它们之间的区别? 说说字符常量和字符串常量的区别
    数据分析三剑客之Pandas时间序列
    Css样式布局之Flex弹性盒子布局
    memcached的安装和使用
    Flask 第十八话之Restful API
    Flask 第十七话之信号
    Flask 第十六话之钩子函数
    Flask 第十五话之请求上下文及全局全局存储g对象
  • 原文地址:https://www.cnblogs.com/zhuzhongxing/p/14147107.html
Copyright © 2011-2022 走看看