我希望String字段包含两个其他字段

时间:2015-10-13 12:46:29

标签: c#

我希望FullnameFirstNameLastname组成,但我得到以下异常:

  

字段初始值设定项不能引用非静态字段,方法或   property'Employee.FirstName'/'Employee.LastName'

class Employee
{
    public string FirstName { get; }
    public string LastName { get; }
    private string FullName = string.Format("{0}, {1}", FirstName, LastName);
}

3 个答案:

答案 0 :(得分:9)

运行时不保证类字段的赋值顺序。这就是编译器警告您编译时错误的原因。

如果FullName是公共财产,您可以执行以下操作:

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

对于不使用C#-6的人:

class Employee
{
    public string FirstName { get; private set; }
    public string LastName { get; private set; }
    public string FullName 
    {
        get { return string.Format("{0} {1}", FirstName, LastName); } 
    }
}

或者,如果您不希望它是公共的,您需要通过类构造函数实例化字段

class Employee
{
    public Employee(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
        fullName = $"{FirstName} {LastName}";
    }

    public string FirstName { get; }
    public string LastName { get; }
    private string fullName;
}

答案 1 :(得分:2)

您尝试在初始化变量之前设置值

如果你从一个集合变为一个集合那么你将获得更多的成功

class Employee{
    public String FirstName { get; }
        public String LastName { get; }
        public String FullName {
            get{
                return String.Format("{0}, {1}", FirstName, LastName);
            }
        }
    }
}

答案 2 :(得分:1)

我认为你需要把它放在类构造函数中。该错误是因为您尝试使用不存在的值,或者更确切地说,当您使用它们时可能不会。