为什么有这样的方法可以转换为.net中的字符串?我看到的方法是.ToString,Convert.ToString()和(string).有什么不同.
Convert.ToString(obj)
将指定的值转换为其等效的String表示形式.String.Empty
如果指定值,则返回null
.
obj.ToString()
返回表示当前对象的字符串.此方法返回对文化敏感的人类可读字符串.例如,对于值为零的Double类的实例,Double.ToString的实现可能会返回"0.00"或"0,00",具体取决于当前的UI文化.默认实现返回Object类型的完全限定名称.
可以在派生类中重写此方法,以返回对该类型有意义的值.例如,基本数据类型(如Int32)实现ToString,以便返回对象表示的值的字符串形式.需要更多控制字符串格式而不是ToString的派生类必须实现IFormattable,其ToString方法使用当前线程的CurrentCulture属性.
(string)obj
这是一个强制转换操作,而不是函数调用.如果您确定该对象的类型为字符串,或者它具有可以将其转换为字符串的隐式或显式运算符,请使用它.null
如果对象是,则返回null AND of type String or of type which implements custom cast to string operator. See examples.
obj as string
安全铸造操作.与上面相同,但是null
如果转换操作失败,它将返回而不是抛出异常.
提示:不要忘记使用CultureInfo obj.ToString()
和Convert.ToString(obj)
12345.6D.ToString(CultureInfo.InvariantCulture); // returns 12345.6 12345.6D.ToString(CultureInfo.GetCultureInfo("de-DE")); // returns 12345,6 Convert.ToString(12345.6D, CultureInfo.InvariantCulture); // returns 12345.6 Convert.ToString(12345.6D, CultureInfo.GetCultureInfo("de-DE")); // 12345,6 Convert.ToString(test); // String.Empty, "test" is null and it's type // doesn't implement explicit cast to string oper. Convert.ToString(null); // null (string) null; // null (string) test; // wont't compile, "test" is not a string and // doesn't implement custom cast to string operator (string) test; // most likely NullReferenceException, // "test" is not a string, // implements custom cast operator but is null (string) test; // some value, "test" is not a string, // implements custom cast to string operator null as string; // null
以下是自定义强制转换操作符的示例:
public class Test { public static implicit operator string(Test v) { return "test"; } }
.ToString()
可以从任何对象调用.但是,如果您调用它的类型没有良好的实现,则默认值是返回类型名称,而不是有关该类型实例的有意义的内容.此方法继承自基Object
类型,您可以在自己的类型中重载它以执行任何操作.
(string)
是一个演员,而不是函数调用.如果你需要的对象在某种意义上是一个字符串,或者你知道有一个很好的隐式转换(比如from int
),你应该只使用它.这将抛出异常是对象无法转换(包括对象何时null
)
as string
是另一种写入方式(string)
,但它的不同之处在于,null
如果转换失败,它返回而不是抛出异常.
Convert.ToString()
尝试将参数实际转换为字符串.如果你对参数的了解不多,这是最好的选择.它可能很慢,因为它必须做很多额外的工作来确定返回什么样的结果,但是当你不太了解这个参数时,同样的工作也使它成为最强大的选择.如果没有其他可用的东西,它将回退到调用参数的.ToString()
方法.
String.Format
字符串类' .Format
方法也可用于将某些类型转换为字符串,另外一个优点是您可以控制结果字符串的外观.
Serialization
这有点复杂,但.Net包含几种不同的机制,用于将对象转换为可以安全地存储并从磁盘或其他流机制重新加载的表示.这包括二进制格式化程序,但最常见的是转换为某种格式的字符串或其他格式(通常为xml).如果您希望稍后将字符串转换回其原始类型,或者您希望完整表示复杂类型,则序列化是合适的.
如果对象为null,Convert.ToString()将返回一个空字符串.ToString和(String)将引发异常.如果值为null,Convert.ToString将在内部调用.ToString(),它将返回一个空String.