是一个属性";全名";坏的,当有";名字";以及";姓氏"

本文关键字:quot 坏的 当有 名字 姓氏 以及 全名 一个 属性 | 更新日期: 2023-09-27 18:01:07

我有一个Employee类:

class Employee
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

有时我想得到全名,一遍又一遍地写emp.FirstName + emp.LastName很乏味。

添加FullName属性(因为它是两次或两次相同的数据(是否是一种糟糕的做法?

class Employee
{
    string FirstName { get; set; }
    string LastName { get; set; }
    string FullName => $"{FirstName} {LastName}";
    }
}

是一个属性";全名";坏的,当有";名字";以及";姓氏"

它不是两次相同的数据,添加它实际上是在减少重复代码。

如果不计算FullName,并且必须将其与FirstName/LastName一起维护(保持同步、设置等(,那就太糟糕了。

相反,这是正确的方法。想象一下,如果你需要在FirstName和LastName之间添加一个Title(但前提是已经给定了一个(。如果在任何地方都使用像FullName这样的只读属性,则只需进行一次更改。如果您使用这两个单独的属性,那么您需要到处进行更改(If和任何需要正确格式化结果的内容(

提供ToString()方法,而不是FullName属性,它可以准确地返回您想要的内容。

public override string ToString()
{
    return string.Format("{0} {1}", FirstName, LastName);
}

看看MSDN文档:如何:重写ToString方法(C#编程指南(

用法:

Employee emp = new Employee();
emp.FirstName = "Maciej";
emp.LastName = "Los";
Console.WriteLine("Employee: {0}", emp.ToString());
//returns: "Employee: Maciej Los"