在编写代码以获取自定义类的字符串表示形式时,我正在尝试确定最佳实践。
假设我们有以下内容:
public class DoubleParameter
{
public double Value { get; set; }
public string Description { get; set; }
public string Units { get; set; }
}
并且我们希望能够获得用于调试目的的类的字符串表示形式。关于代码的可读性/可维护性和最佳实践,我正在评估三个选项
从编译器的角度来看,大多数选项都非常相似-但是出于可读性/可维护性,是否有客观原因偏爱任何特定选项?还是个人喜好?
使用示例:
// 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);
答案 0 :(得分:1)
出于调试目的,ToString()胜出。
为什么?因为当您使用VisualStudio单步执行代码时,将鼠标悬停在变量上或将变量放在监视窗口中时,VS会轻松显示ToString()结果。否则,您必须深入研究以获得您所关注的财产。如果您使用列表/枚举/等,这可能会特别烦人。
此外,ToString()已经存在,并且已经应该作为对象实例的文本表示形式。这就是重点。为什么还要添加另一个也对象的字符串表示形式的属性?
答案 1 :(得分:1)
我建议您将属性设为私有,并在内部将其用作属性[DebuggerDisplayAttribute]的值
[DebuggerDisplay("{ReadableValue},nq")]
public class DoubleParameter
{
private string ReadableValue { get; }
}
答案 2 :(得分:0)
非常感谢您的所有评论。
我在你们大多数人的行列中:使用ToString()
,很高兴知道我并不孤单。但是最后,看来我们将“保存”它以备以后记录。
@LarsTech:非常感谢您提供的版本;)