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

jer*_*oen 4 c#

我想Fullname,以包括FirstNameLastname,但我得到以下异常:

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

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

Yuv*_*kov 9

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

如果FullName是公共财产,您可以这样做:

class Employee
{
    public string FirstName { get; }
    public string LastName { get; }
    public string FullName => $"{FirstName} {LastName}";
}
Run Code Online (Sandbox Code Playgroud)

对于不使用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); } 
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)