c# - 将字符串转换为十进制? (可为空的十进制)通过扩展方法

标签 c# generics

我想将字符串转换为小数?引用之前的一个问题here

其中一个答案给出了一个对象扩展来像这样转换对象

public static class ObjectExtensions
{
    public static Nullable<T> ToNullable<T>(this object input)
        where T : struct
    {
        if (input == null)
            return null;
        if (input is Nullable<T> || input is T)
            return (Nullable<T>)input;
        throw new InvalidCastException();
    }
}

用法:

object value = 123.45m;
decimal? dec = value.ToNullable<decimal>();

但是,上面的方法不适用于字符串,是否可以定义上述方法的配套方法来专门处理字符串?

特别喜欢我希望能够做的是:-

object v1 = 123.45m;
decimal? d1 = v1.ToNullable<decimal>();

object v2 = "123.45";
decimal? d2 = v2.ToNullable<decimal>();

最佳答案

一个简单的扩展方法将字符串转换为十进制。当然对于非空字符串

public static class StringExtensions
{
   public static decimal? ToNullableDecimal(this string s)
   {
      decimal value;
      if (!Decimal.TryParse(s, out value)
         return null;
      return value;
   }
}

关于c# - 将字符串转换为十进制? (可为空的十进制)通过扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179989/

相关文章:

java - 为什么在 Java 泛型中返回类型是 `<T>Type` 而不是 `Type<T>` ?

Java 未经检查的转换

c# - 从 mysql 查询中获取正确的顺序或结果

c# - Paypal API 在指向我的证书文件时失败

c# - 四舍五入到最接近的偶数分

c# - 在不同 DPI 设置下运行的 Windows 窗体应用程序中的奇怪行为

c# - 是否可以使用 WCF 发现来公开使用命名管道的 WCF 端点?

c# - List<T> 和 ArrayList<T> 哪个更快?

c# - 有没有一种通用的方法可以通过 C# 中的反射来填充各种通用集合?

c# - 如何创建一个完整的通用 TreeView 类数据结构