gpt4 book ai didi

c# - Console.Writeline 基础知识

转载 作者:IT王子 更新时间:2023-10-29 04:42:32 26 4
gpt4 key购买 nike

我对以下代码有疑问:

class CurrentDate
{
static void Main()
{
Console.WriteLine(DateTime.Now);
}
}

文档说:

Writes the text representation of the specified array of objects, followed by the current line terminator, to the standard output stream using the specified format information.

所以我的问题是:WriteLine 怎么知道 DateTime 对象的文本表示?我的意思是,如果我从自己的类创建自己的对象,它怎么知道如何将值转换为文本?更重要的是,它怎么知道值是多少?如何定义对象的“值”?

最佳答案

How come WriteLine knows the text representation of DateTime object? I mean, if I create my own object from my own class, how would it know how to convert the value to text?

Console.WriteLine 有一个 set of overloads匹配特定类型(主要是原语)。如果编译器未将重载与提供的类型相匹配,它将与采用 System.Object 的重载相匹配(前提是您提供了一个参数)。如果发生这种情况,它会检查该类型是否实现了 IFormattable,如果是,它会调用 IFormattable.ToString(null, Formatter)。 .如果没有,它会在您的对象上调用 ToStringToStringSystem.Object 中定义,所有对象都继承自它。每个需要自定义表示的对象都会覆盖默认行为,例如 DateTime

例如,假设您有一个带有 Bar 字符串属性的 Foo 类,并且您希望 Console.WriteLine 打印一些有意义的内容将 Foo 传递给它时:

public class Foo
{
public string Bar { get; set; }
public override string ToString()
{
return Bar;
}
}

现在我们要传递给它Console.WriteLine:

public static void Main(string[] args)
{
var foo = new Foo { Bar = "bar" };
Console.WriteLine(foo);
}

会产生“bar”。

关于c# - Console.Writeline 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com