Я пытаюсь определить наилучшую практику при написании кода для получения строкового представления пользовательского класса.
Представьте, что у нас есть следующее:
public class DoubleParameter
{
public double Value { get; set; }
public string Description { get; set; }
public string Units { get; set; }
}
И нам нужна возможностьчтобы получить строковое представление класса для целей отладки.Что касается читаемости / удобства сопровождения кода и рекомендаций, я оцениваю три варианта
- Встроенное свойство
- Пользовательский метод
- Переопределение ToString ()
Большинство из них очень похожи с точки зрения компилятора - но есть ли какие-либо объективные причины для предпочтения какого-либо конкретного варианта с точки зрения удобочитаемости / удобства сопровождения?Или это вопрос личных предпочтений?
Примеры использования:
// Option 1 - Inline Property
public string ReadableValue =>
$"{this.Description} => {this.Value.ToString("F2")} ({this.Units})";
// example usage: Console.WriteLine(myVar.ReadableValue);
// Option 2 - Custom Method
public string ToReadable() =>
$"{this.Description} => {this.Value.ToString("F2")} ({this.Units})";
// example usage: Console.WriteLine(myVar.ToReadable());
// Option 3 - Overriding ToString()
public override string ToString() =>
$"{this.Description} => {this.Value.ToString("F2")} ({this.Units})";
// example usage: Console.WriteLine(myVar);