У меня есть класс, который я хочу легко записать в строки (например, для ведения журнала). Могу ли я использовать неявный оператор для неявного применения объекта к строке, а не для переопределения метода ToString?
Например, у меня есть класс Person с именем и возрастом:
public class Person
{
public string Name { get; set; }
public int Age { get; set;}
}
Я могу переопределить ToString:
public override string ToString()
{
return String.Format("Name: {0}, Age: {1}", this.Name, this.Age);
}
Или я мог бы использовать неявный оператор:
public static implicit operator string(Person p)
{
return String.Format("Name: {0}, Age: {1}", p.Name, p.Age);
}
Теперь, передавая этот объект методу, который ожидает строку, вместо
Log(Person.ToString());
Я могу просто позвонить
Log(Person);
Я мог бы просто вызвать переопределенную ToString в неявном литье
public static implicit operator string(Person p)
{
return p.ToString();
}
Является ли это плохим использованием неявного приведения оператора в String?
Какова наилучшая практика при использовании этой функции?
Я подозреваю, что перегрузка ToString будет лучшим ответом, и если да, то у меня есть несколько вопросов:
- Когда я когда-либо буду использовать неявный приведение в String?
- Каков наилучший пример использования неявного приведения в String?