[英]Difference between “Convert.ToString(Nullable<int>)” and “Nullable<int>.ToString()”?
我對轉換方法“ .ToString()”普遍存在疑問。 首先,我使用以下語句進行轉換:
Nullable<int> SomeProperty;
string test = SomeProperty.ToString();
到這里為止沒有問題,但是之后我要向ToString()方法添加“ CultureInfo.InvariantCulture”。 它不起作用,因為Nullable的.ToString()沒有參數。 為什么Resharper建議向我插入CultureInfo信息?
之后,我嘗試其他方式並使用以下語句:
Nullable<int> SomeProperty;
string test = Convert.ToString(SomeProperty, CultureInfo.InvariantCulture);
該語句工作正常,但現在我想了解第一條和第二條語句之間的技術區別??
Convert.ToString方法(對象,IFormatProvider) :
如果value參數實現IConvertible接口,則該方法將調用value的IConvertible.ToString(IFormatProvider)實現。 否則,如果value參數實現IFormattable接口,則該方法將調用其IFormattable.ToString(String,IFormatProvider)實現。 如果value不實現任何接口,則該方法將調用value參數的ToString()方法。
Nullable<int>
視為標准int
,並且IFormattable.ToString(String, IFormatProvider)
帶有格式提供程序的Convert.ToString
時將觸發IFormattable.ToString(String, IFormatProvider)
。
證明:
class MyFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
return "G";
}
}
static void Main(string[] args)
{
Nullable<int> SomeProperty = 1000000;
Console.WriteLine(SomeProperty.ToString());
Console.WriteLine(Convert.ToString(SomeProperty));
Console.WriteLine(Convert.ToString(SomeProperty, new MyFormatProvider()));
}
將斷點放在GetFormat
,將在執行Main
的最后一個時將其擊中。
閱讀msdn http://msdn.microsoft.com/en-us/library/6t7dwaa5.aspx
返回值使用通用數字格式說明符(“ G”)和當前區域性的NumberFormatInfo對象格式化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.