簡體   English   中英

之間的區別“ Convert.ToString(Nullable <int> )和“可為空 <int> 的ToString()”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM