bool b = true;
var a = Convert.ToDecimal(b);
这个你通过decimal d=(decimal)f;转不了吧。
Convert.ToDecimal有18个重载,并不是所有的都能通过decimal d=(decimal)f来强转

解决方案 »

  1.   

    前者是显式类型转换,这是C#的转换方法,是C#语言的基本语法。 
    而Convert.Toxxxx()是.Net的转换方法,是.Net类库支持的。 也就是说第一种在C#中可以用,与.Net类库没有关系。 
    第二种可以在.Net下的任何语言中用,比如C#,VB,都适用,但是需要.Net类库的支持。
      

  2.   

    Convert是重新封装的 表示他更好用!!!
      

  3.   

    的确没什么差别,但是微软怕你写的没有他们好,再者用着也麻烦,于是就集成了这些:public static decimal ToDecimal(bool value)
    {
        return ((value != null) ? 1 : 0);
    }
    public static decimal ToDecimal(byte value)
    {
        return value;
    }
    public static decimal ToDecimal(char value)
    {
        return ((char) value).ToDecimal(null);
    }
    public static decimal ToDecimal(DateTime value)
    {
        return ((DateTime) value).ToDecimal(null);
    }
    public static decimal ToDecimal(decimal value)
    {
        return value;
    }
    public static decimal ToDecimal(double value)
    {
        return (decimal) ((double) value);
    }
    public static decimal ToDecimal(short value)
    {
        return value;
    }
    public static decimal ToDecimal(int value)
    {
        return value;
    }
    public static decimal ToDecimal(long value)
    {
        return value;
    }
    public static decimal ToDecimal(object value)
    {
        if (value == null)
        {
            goto Label_0010;
        }
        return ((IConvertible) value).ToDecimal(null);
    Label_0010:
        return new decimal(0);
    }
    public static decimal ToDecimal(sbyte value)
    {
        return value;
    }
    public static decimal ToDecimal(float value)
    {
        return (decimal) ((float) value);
    }
    public static decimal ToDecimal(string value)
    {
        if (value != null)
        {
            goto Label_000A;
        }
        return new decimal(0);
    Label_000A:
        return decimal.Parse(value, CultureInfo.CurrentCulture);
    }
    public static decimal ToDecimal(ushort value)
    {
        return value;
    }
    public static decimal ToDecimal(uint value)
    {
        return value;
    }
    public static decimal ToDecimal(ulong value)
    {
        return value;
    }
    public static decimal ToDecimal(object value, IFormatProvider provider)
    {
        if (value == null)
        {
            goto Label_0010;
        }
        return ((IConvertible) value).ToDecimal(provider);
    Label_0010:
        return new decimal(0);
    }
    public static decimal ToDecimal(string value, IFormatProvider provider)
    {
        if (value != null)
        {
            goto Label_000A;
        }
        return new decimal(0);
    Label_000A:
        return decimal.Parse(value, 0x6f, provider);
    }
      

  4.   

    Convert可以将其它类型的数据转换到指定类型,除非无法转换
    而强制转换则数据必须就是指定类型的数据,否则报异常简单的说
    string a = "12354";
    (int)a 异常
    Convert.ToInt32(a)正确object a= 12345;
    (int)a 正确
    Convert.ToInt32(a)正确