请各位指教!!
解决方案 »
- 怎么删除数组中的数据
- Xml中的image字段,怎么导入数据库阿?
- 谁有developer express的Xtrabar资料
- 会什么我不能运行调试程序??
- 高分请教曾经遇到的一道笔试题!
- C# Tebcontrol remove问题 在写等!
- 如何在DreamWeaver里设置asp.net(C#)数据库相对路径连接字符串
- C#多线程处理摄像头的问题
- 如何在c#中调用另一个使用#c写的exe文件,送100分
- .net环境问题~!!
- 怎么吧字符串转化为类似%u591A%u591A%u5173%u7167%u591A%u591A%u5173%u7167类型
- 使用.NET自带组件上传文件到ftp服务器报错
可以把DBNull/Null转化为String.EmptyObject.ToString() 是从Object里继承来的方法。对于空引用和DBNull的对象直接调用.ToString()会引发异常。
比如byte[]的反序列化.tostring()
是基类的函数.
可能被重写,但很多时候含义不一样.
我试了试!!Convert.ToString(DBNull.value)DBNull.value.toString()的结果是一样的!!!个人认为用.toString()这个方法好
//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()个人观点,欢迎指正
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这下知道这两者之间的差别了吧?
btnUpdate.Tag.ToString();如果Tag為空,則會報異常