(类型)变量与Convert.To类型(变量),这两种都是变量类型的显式转换,请问它们之间有什么区别?

解决方案 »

  1.   

    还有就是它们跟“变量.ToString()”的区别是什么?
      

  2.   

    int, double ,float是编译器所知道的基元类型,编译器知道如何在他们之间类型转换
    对于其他FCL中的核心类型的对象,可以使用System.Convert的静态函数来做类型转换Convert类型还提供了ChangeType方法,可以把一个类型转换为另外一个类型,前提是被转换类型实现了IConvertible接口。
      

  3.   

    麻烦详细说下:
                x = int.Parse(a);
                y = (int)a;
                z = Convert.ToInt32(a);
    三种方法的区别.
    另外,字符串 "20年以来" 转为数字 20 用什么方法好?
      

  4.   

    感谢woyaomoney的回复,不过还是不太明。
    大家知道的可以详细解释下吗?
      

  5.   

    反编译一下就知道
    Convert.To类型内部是调用 (类型)变量 与 .ToString()”的
      

  6.   

    字符串不可以
    (int)转位数字的
    反编译int.Parsepublic static int Parse(string s)
    {
          return Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
    }internal static unsafe int ParseInt32(string s, NumberStyles style, NumberFormatInfo info)
    {
          byte* numPtr1 = (byte*) stackalloc byte[(1 * 0x72)];
          Number.NumberBuffer buffer1 = new Number.NumberBuffer(numPtr1);
          int num1 = 0;
          Number.StringToNumber(s, style, ref buffer1, info, false);
          if ((style & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
          {
                if (!Number.HexNumberToInt32(ref buffer1, ref num1))
                {
                      throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
                }
                return num1;
          }
          if (!Number.NumberToInt32(ref buffer1, ref num1))
          {
                throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
          }
          return num1;

     
      

  7.   

    反编译Convert.ToInt32(string)public static int ToInt32(string value)
    {
          if (value == null)
          {
                return 0;
          }
          return int.Parse(value, CultureInfo.CurrentCulture);

      

  8.   

    说白了,没有本质的区别,归根结底是调用相同的东西
    所以不要说哪种方法好坏!Convert是封装的类,用起来比较方便
    但直接用底层实现也没什么不可