当有“FirstName”和“LastName”时,属性“FullName”是否错误?

时间:2016-08-07 08:17:45

标签: c# properties

我有一个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
    {
        get
        {
            return string.Format("{0} {1}", FirstName, LastName);
        }
    }
}

3 个答案:

答案 0 :(得分:6)

两次数据不一样,你实际上是通过添加它来减少重复的代码。

如果不计算FullName并且必须与FirstName / LastName一起维护(保持同步,设置等),那将是不好的。

答案 1 :(得分:1)

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

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

查看MSDN文档:How to: Override the ToString Method (C# Programming Guide)

用法:

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

答案 2 :(得分:1)

相反,这是正确的方法。想象一下,如果你需要在FirstName和LastName之间添加一个Title(但是只有在给出一个Title之后)。如果您在任何地方使用像FullName这样的只读属性,则只需进行一次更改即可。如果您使用两个单独的属性,那么您需要到处进行更改(ifs和任何您需要的结果才能正确格式化)