请各位指教!!

解决方案 »

  1.   

    Convert.ToString() 把Object转换成String对象。
    可以把DBNull/Null转化为String.EmptyObject.ToString() 是从Object里继承来的方法。对于空引用和DBNull的对象直接调用.ToString()会引发异常。
      

  2.   

    Convert.ToString 是指把某某类型转化成string.
    比如byte[]的反序列化.tostring()
    是基类的函数.
    可能被重写,但很多时候含义不一样.
      

  3.   

    后一个是通过object.ToString()方法转换成字符串前一个是对上面这种方法的一个包装,提供一种统一的静态方法,事实上内部还是调用上面那个.ToString()
      

  4.   


    我试了试!!Convert.ToString(DBNull.value)DBNull.value.toString()的结果是一样的!!!个人认为用.toString()这个方法好
      

  5.   


    //Convet中的ToString方法
    public static string ToString(int value)
    {
        return value.ToString(); //调用int的ToString方法
    }//int32的ToString方法1
    public override string ToString()
    {
        return this.ToString(null, null);
    }//int32的ToString方法2
    public string ToString(string format, IFormatProvider provider)
    {
        return Number.FormatInt32(this.m_value, format, NumberFormatInfo.GetInstance(provider));

    看了这个你就明白了把,实际Convet调用的是Int里的ToString方法。这是ToString方法比较特殊。基元类型没有公开IConvertible 接口的实现,所以不能直接使用Toint(),ToChar()等方法来进行基元之间的转换
    但他通过Convert类来转换,真正的实现都是在Convert中,基元类型IConvertible 接口的实现只是调用Convert中的实习方法。而Tostring正好和这个相反,他的实现在基元类型中,而不是Convert中。不在各自类型中直接实现IConvertible接口,直接提供接口调用,而是在Convert类中提供了方法。我觉得是因为接口是引用类型,将一个未装箱的值类型实例转型为一个该实例实现的接口类型也需要对该实例进行装箱。如果直接使用接口,会因为装箱导致性能损失。而使用Convert类来实现,就解决了这个问题。而对于String本来就是引用类型,而且使用比较多,所以可以直接使用ToString()个人观点,欢迎指正
      

  6.   

    多谢LGame的指正。DBNull.Value.ToString()的确没有异常发生。但是我认为使用Convert.ToString()不需要判断是否是null。楼主问的Convert.ToString 和 .ToString()的区别,不是说用哪一个更好的说。各有各的使用的场合。
      

  7.   

    你试着运行一下下面的代码就知道了
                object v = null;
                Console.WriteLine(Convert.ToString(v));
                Console.WriteLine(v.ToString());Convert对于null值不会抛出异常,而直接用ToString的话就会有异常.并且Convert能自动根据值的类型是否已实现IConvertible或IFormattable接口自动调用接口实现方法.而ToString则未必会有这种效果!!(除非此方法已被重写),示例:namespace ConsoleApplication1
    {
        public class ConvertTest
            : IFormattable
        {        #region IFormattable 成员
            public string ToString(string format, IFormatProvider formatProvider)
            {
                return "This is formattable string";
            }
            #endregion
        }    class Test
        {
            static void Main()
            {
                ConvertTest v = new ConvertTest();
                Console.WriteLine(Convert.ToString(v));
                Console.WriteLine(v.ToString());
                
                Console.Read();
            }
        }
    }
    输出结果如下:
    This is formattable string
    ConsoleApplication1.ConvertTest这下知道这两者之间的差别了吧?
      

  8.   


    btnUpdate.Tag.ToString();如果Tag為空,則會報異常