)"和 "Nullable.ToString()"之间的区别?-6ren"> )"和 "Nullable.ToString()"之间的区别?-我对转换方法“.ToString()”有一个普遍的疑问。起初我使用这个语句进行转换: Nullable SomeProperty; string test = SomeProperty.ToStrin-6ren">
gpt4 book ai didi

c# - "Convert.ToString(Nullable)"和 "Nullable.ToString()"之间的区别?

转载 作者:行者123 更新时间:2023-11-30 21:00:05 28 4
gpt4 key购买 nike

我对转换方法“.ToString()”有一个普遍的疑问。起初我使用这个语句进行转换:

Nullable<int> SomeProperty;
string test = SomeProperty.ToString();

到这里没有问题,但之后我想将“CultureInfo.InvariantCulture”添加到 ToString() 方法。它不起作用,因为 Nullable 的 .ToString() 没有参数。为什么Resharper提示我插入CultureInfo信息??

之后我尝试另一种方式并使用这个语句:

Nullable<int> SomeProperty;
string test = Convert.ToString(SomeProperty, CultureInfo.InvariantCulture);

这个语句工作正常,但现在我想了解第一个和第二个语句之间的技术差异??

最佳答案

Convert.ToString Method (Object, IFormatProvider) :

If the value parameter implements the IConvertible interface, the method calls the IConvertible.ToString(IFormatProvider) implementation of value. Otherwise, if the value parameter implements the IFormattable interface, the method calls its IFormattable.ToString(String, IFormatProvider) implementation. If value implements neither interface, the method calls the value parameter's ToString() method.

Nullable<int>看到像标准int , 和 IFormattable.ToString(String, IFormatProvider)Convert.ToString 时被解雇调用格式提供程序。

证明:

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 的最后一个时被击中被执行。

关于c# - "Convert.ToString(Nullable<int>)"和 "Nullable<int>.ToString()"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152689/

28 4 0