Console.WriteLine, отвечает за печать текста.
В случае Console.WriteLine(string)
фактически возвращает строковое значение;
В любом другом случае он пытается преобразовать значение в строку с помощью , вызывая метод экземпляра объекта .ToString()
.
Любой тип в C # наследуется от System.Object, и поэтому он имеет метод .ToString () .
Используя Inheritance, многие типы переопределяют фактический унаследованный метод и реализуют свое восприятие того, как их значение должно выглядеть как строка.
Это легко сделать, используя метод , переопределяющий , и примените свою собственную логику.
Пример взят из MSDN
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
Тестовый код
Person person = new Person { Name = "John", Age = 12 };
Console.WriteLine(person);
// Output:
// Person: John 12
Итак, вы можете спросить, почему я получаю ExampleCars.Car
? вы получаете это, потому что вы не реализовали свое собственное представление метода объекта .ToString. Таким образом, реализация System.Object на самом деле возвращает тип экземпляра в виде строки, и это именно то, что вы получаете.
System.Object.ToString () Исходный код .
public virtual String ToString()
{
return GetType().ToString();
}
System.Int32
внедрить, изменив значение 1
на "1"
В то время как другие типы могут реализовать свои собственные. например: new DateTime(2018, 12, 31) can return "12/31/2018"