2016-07-12 4 views
0

複数のプロパティを持つクラスがあります。私が望むものは、値が渡されない場合、特定のプロパティに設定された値です。たとえば、txtFather.Textが空白の場合、クラスの_theFatherプロパティのデフォルト値は "N/A"になります。クラスプロパティに値が設定されていないときにデフォルト値を作成

クラスStudentModel

private string _theFather = "N/A"; 

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

public void InsertStudent(StudentModel student) 
    { 
     MessageBox.Show(_theFather); 
    } 

クラスAddStudent

private void button1_Click(object sender, EventArgs e) 
    { 
     var sm = new StudentModel() 
     { 
      SetFather = txtFathersName.Text 
     }; 
     sm.InsertStudent(sm); 
    } 

私はtxtFather.Textに値を配置する場合、私はそのを得る:ここでは私がこれまで持っているコードです。私はtxtFather.Textを空白のままにしておけば、 "N/A"の値は得られません。私はちょうど空白か全く値を得ません。 ご協力いただきありがとうございます。

+1

プロパティの標準命名規則では、動詞を含まないということです。理想的には 'SetFather'プロパティは単に' Father'と呼ばれます。さもなければ 'var dad = StudentModel.SetFather'と言って少し奇妙に見えます。 ( 'InsertStudent'のようなメソッド名の動詞を使用すると問題ありません)。 – DeanOC

+0

私はそれを念頭に置いておきます。ありがとう – Ibanez1408

答えて

2

私はセッターに渡される値をチェックして、あなただけのバッキングを更新することにより、StudentModelクラス内のロジックをカプセル化します文字列がnullでも空白でもない場合は、field

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

この方法では、ロジックは1か所にしかありません。クラスのコードを変更する場合は、どこでも変更してください。

+0

完璧に動作します!ありがとうございました。 – Ibanez1408

0

あなたはこのように、文字列が入力された場合にのみ、プロパティを設定する必要があります。

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

    sm.InsertStudent(sm); 
} 
関連する問題