C# 在类属性中未设置任何值时创建默认值

C# 在类属性中未设置任何值时创建默认值,c#,C#,我有一个具有多个属性的类。我想要的是,如果没有传递给某个属性的值,则为该属性设置一个值。例如,如果txtFather.Text为空,则类的_theMather属性的默认值应为“N/a”。以下是我目前掌握的代码: 班级学生模式 private string _theFather = "N/A"; public string SetFather { get { return _theFather; } set { _theFather = value

我有一个具有多个属性的类。我想要的是,如果没有传递给某个属性的值,则为该属性设置一个值。例如,如果txtFather.Text为空,则类的_theMather属性的默认值应为“N/a”。以下是我目前掌握的代码:

班级学生模式

private string _theFather = "N/A";

    public string SetFather
    {
        get { return _theFather; }
        set { _theFather = value; }
    }

public void InsertStudent(StudentModel student)
    {
        MessageBox.Show(_theFather);
    }
班级增加学生人数

private void button1_Click(object sender, EventArgs e)
    {
        var sm = new StudentModel()
        {
            SetFather = txtFathersName.Text
        };
        sm.InsertStudent(sm);
    }
如果我在txtFather.Text中放置一个值,我会在StudentModel类中获取its值,但是如果我将txtFather.Text留空,我不会获取“N/a”值。我只是得到一个空白或根本没有值。
谢谢您的帮助。

您应该仅在键入字符串时设置属性,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    var sm = new StudentModel();
    if (!string.IsNullOrEmpty(txtFathersName.Text))
        sm.SetFather = txtFathersName.Text;

    sm.InsertStudent(sm);
}

仅当键入字符串时,才应设置属性,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    var sm = new StudentModel();
    if (!string.IsNullOrEmpty(txtFathersName.Text))
        sm.SetFather = txtFathersName.Text;

    sm.InsertStudent(sm);
}

我将通过检查传递给setter的值来封装StudentModel类中的逻辑,并且仅在字符串不为null或空白时更新支持字段

 public string SetFather
    {
        get { return _theFather; }
        set { 
              if(!string.IsNullOrWhiteSpace(value)) 
              { 
                 _theFather = value; 
              }
            }
    }

这样的话,你只有一个地方的逻辑。如果您修改类的消费代码,那么您必须记住在任何地方都要更改它。

我将通过检查传递给setter的值来封装StudentModel类中的逻辑,并且仅在字符串不为null或空白时更新支持字段

 public string SetFather
    {
        get { return _theFather; }
        set { 
              if(!string.IsNullOrWhiteSpace(value)) 
              { 
                 _theFather = value; 
              }
            }
    }

这样的话,你只有一个地方的逻辑。如果您修改类的使用代码,那么您必须记住在任何地方都要更改它。

FYI,属性的标准命名约定是它们不包含动词。因此理想情况下,您的
SetFather
属性将被称为
Father
。否则,说
var-dad=StudentModel.SetFather
看起来有点奇怪。(在方法名中使用动词,比如
InsertStudent
),我会记住这一点。ThanksFYI,属性的标准命名约定是它们不包含动词。因此理想情况下,您的
SetFather
属性将被称为
Father
。否则,说
var-dad=StudentModel.SetFather
看起来有点奇怪。(在方法名中使用动词,比如
InsertStudent
),我会记住这一点。谢谢你!谢谢,很好用!非常感谢。