为什么我的 属性 没有进行检查?

Why isn't my property doing the check?

我的构造函数从表单中获取信息。 'name' 用 'aName' 寻址(来自构造函数),然后必须用 prop 'NameCheck' 完成检查。但是如果我编译它,它 return 是一个空字符串。有什么想法吗?

代码:

----Class----

//Fields
private List<Create> Characters;
private string name;
private int health;
private int mSpeed;
private Role role;
private Speciality speciality;

//Properties
public string NameCheck
{
    get {
        return name;
    }
    set
    {
        if (string.IsNullOrEmpty(name))
        {
            name = "Name not specified";
        }
        else 
        {
            name = value;
        }
    }
}

//Constructor

public Create(string aName, int aHealth, int aMSpeed, Role aRole, Speciality aSpeciality)
{
    this.name = aName;
    this.health = aHealth;
    this.mSpeed = aMSpeed;
    this.role = aRole;
    this.speciality = aSpeciality;

    Characters = new List<Create>();
}

----表格----

Create character = new Create(tbName.Text, health, mspeed, aLane, aSpecial);

Characters.Add(character);

cbSummary.Items.Add(character.ToString());

PS: cbSummary 是一个组合框。

编辑:

public override string ToString()
{
    return "Name: " + NameCheck + " - Health: "  + health + " -  MovementSpeed: " + mSpeed + " - Role: " + role + " - Speciality: " + speciality;
}

您应该在构造函数中设置 this.NameCheck 而不是 this.name

public Create(string aName, int aHealth, int aMSpeed, Role aRole, Speciality aSpeciality)
{
    this.NameCheck = aName;

您还应该在 属性 setter

中检查 value 是否为空或是否为空,而不是 name
set
{
    if (string.IsNullOrEmpty(value))
    {

您的 属性 中有一个小错别字:

public string NameCheck
{
    get {
        return name;
    }
    set
    {
        // You need to check value, not name.
        if (string.IsNullOrEmpty(value))
        {
            name = "Name not specified";
        }
        else 
        {
            name = value;
        }
    }
}

在您的构造函数中,您应该使用 NameCheck 属性 而不是 name 字段:

public Create(string aName, int aHealth, int aMSpeed, Role aRole, Speciality aSpeciality)
{
    this.NameCheck = aName;
    this.health = aHealth;
    this.mSpeed = aMSpeed;
    this.role = aRole;
    this.speciality = aSpeciality;

    Characters = new List<Create>();
}

另外,正如 Paddy 所说,您在 NameCheckset 正文中进行了不正确的检查:

public string NameCheck
{
    get
    {
        return name;
    }
    set
    {
        if (string.IsNullOrEmpty(value))
        {
            name = "Name not specified";
        }
        else 
        {
            name = value;
        }
    }
}