2016-07-12 1 views
0

여러 속성을 가진 클래스가 있습니다. 내가 갖고 싶은 것은 값이 전달되지 않으면 특정 속성에 설정된 값입니다. 예를 들어 txtFather.Text가 비어있는 경우 클래스의 _theFather 속성에 기본값 "N/A"가 있어야합니다. 여기 코드는 내가 지금까지 가지고 있습니다 : 나는 txtFather.Text에 값을 배치하면클래스 속성에 값이 설정되지 않은 경우 기본값을 만듭니다.

클래스 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); 
    } 

, 내가 할 ITS의를 값을 StudentModel 클래스에 넣지 만 txtFather.Text를 비워두면 "N/A"값을 얻지 못합니다. 나는 빈 값을 전혀 얻지 못한다. 도움 주셔서 감사합니다.

당신은이 같은 문자열이 입력 된 경우에만 속성 설정해야합니다
+1

속성에 대한 표준 명명 규칙은 동사를 포함하지 않는다는 것입니다. 그러므로 이상적으로'SetFather' 속성은 그냥'Father'라고 부릅니다. 그렇지 않으면'var dad = StudentModel.SetFather'라고 약간 이상하게 보입니다. ('InsertStudent'와 같은 메소드 이름에 동사를 사용하는 것이 좋습니다.) – DeanOC

+0

그 점을 명심하십시오. 감사합니다 – Ibanez1408

답변

2

을 만지지를 업데이트 캐릭터 라인이 null 또는 공백이 아닌 경우는 field

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

이렇게하면 로직을 한 곳에서만 사용할 수 있습니다. 클래스의 코드를 수정하면 어디서나 코드를 변경해야합니다.

+0

완벽하게 작동합니다! 고맙습니다. – Ibanez1408

0

: 내가 세터로 전달되는 값을 확인하고하여 StudentModel 클래스 내에서 로직을 캡슐화하는 것

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

    sm.InsertStudent(sm); 
} 
관련 문제