[英]With C# under what circumstances do I need to supply a CultureInfo IFormatProvider when using ToString() on a String or Char?
[英]What is the need of ToString() in C#?
我在c sharp中使用下面的代码。 但是两个WriteLine语句都给出了相同的结果25.那么在c sharp中转换Tostring需要什么? 有什么特别的目的吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sample
{
class Program
{
static void Main(string[] args)
{
int value = 25;
Console.WriteLine(value.ToString());
Console.WriteLine(value);
Console.ReadLine();
}
}
}
如果我理解你的问题, ToString()
的目的是提供一个将对象转换为字符串的一致机制。 在您的Console.WriteLine(value);
例如,您正在使用带有int
的WriteLine
的重载版本,但在使用object
的一般情况下,系统需要提供文本表示的机制。
您应该在类中重写ToString
以为其提供所需的字符串表示形式。 Console.WriteLine
方法根据MSDN调用ToString
:
否则,调用值的
ToString
方法以生成其字符串表示形式,并将结果字符串写入标准输出流。
以这堂课为例:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
现在尝试显示它:
Console.WriteLine(new Person { Id = 42, Name = "Ahmad" });
该类不会覆盖ToString
,因此输出类似于: MyNamespace.Program+Person
现在,让我们重写ToString
以显示更友好的字符串表示:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return String.Format("{0} - {1}", Id, Name);
}
}
现在Console.WriteLine
返回42 - Ahmad
。
任何对象的ToString()
都应该返回该对象的字符串表示。 在您的代码中,
Int32,它返回一个字符串对应的对象(整数的值)。
int value = 25;
Console.WriteLine(value.ToString());
添加更多信息,如果您反编译您的程序,您可以找到它
Console.WriteLine(value.ToString())
上面这行会打电话
/**Methods are from mscorlib.dll**/
public virtual void Write(string value)
{
if (value != null)
{
this.Write(value.ToCharArray());
}
}
而,
Console.WriteLine(值);
上面这行会打电话
public virtual void Write(int value)
{
this.Write(value.ToString(this.FormatProvider));
}
如果您想知道Cast是如何制作的(ToString),那么这可能会对您有所帮助。
当您将对象传递给WriteLine时,.NET会隐式调用ToString方法。
在编程语言中,ToString()或其等价物用于以文本方式表示任何对象。 或者简单地说,它只是用于将任何对象转换为纯字符串格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.