例如,有一个变量:
int temp = 5;
然后:
String a = Convert.ToString(temp);
String b = (temp).ToString();
String c = (String)temp;
这些表达有什么区别?
例如,有一个变量:
int temp = 5;
然后:
String a = Convert.ToString(temp);
String b = (temp).ToString();
String c = (String)temp;
这些表达有什么区别?
一个函数
ToString()(你忘了括号)不是强制转换,它只是一个给出数字的字符串表示的函数。函数
Convert.ToString(int)也不是类型转换,而是为数字提供字符串表示形式的函数。这两个函数都返回当前语言环境中
ToString()的Convert.ToString()字符串表示形式,因此应该没有任何区别。您的示例中的类型转换只是其中之一:
这种类型转换不起作用,因为它
temp具有真实类型int而不是string. 它甚至不会编译,因为编译器看到类型号int不可能是字符串。类型转换不会更改对象本身,它只是将引用的类型更改为对象的实际类型或其基类型之一。(你知道数字 123 与三个字符 '1'、'2' 和 '3' 的字符串不同,对吧?)纯粹主义者的一角。根据sourceof.net ,调用
5.ToString()和是调用Convert.ToString(5)和
分别是内部类
Number。他们NumberFormatInfo.GetInstance(Thread.CurrentThread.CurrentCulture)不能NumberFormatInfo.CurrentInfo匹配吗?我们案例的代码
NumberFormatInfo.GetInstance可以简化为:并且代码
NumberFormatInfo.CurrentInfo最多在 when 的情况下
cultureInfo.m_isInherited == false(也就是说,我们有CultureInfo,而不是从它派生的类型),我们cultureInfo.GetFormat(typeof(NumberFormatInfo))返回NumberFormat,所以没有区别。如果我们没有
CultureInfo,而是从它派生的类型,我们的代码被简化为和
只有当被覆盖的虚函数
GetFormat变得疯狂并在不同的调用上返回不同的类型时,才会有不同的结果。