2011-11-14 2 views
0

그래서 어떻게 생성자 내부의 속성을 사용하여 개인 인스턴스 변수 (필드)의 유효성을 검사합니까?속성에서 집합 유효성 검사를 사용하여 생성자 내에서 개인 필드를 설정하십시오.

나는 작품이 코드를 가지고,하지만 난이 그것을 할 예정이다 방법없는 강한 느낌이 있습니다

class Account 
    { 
     private decimal acctBalance = 0; 

     public decimal AcctBalance 
     { 
      get 
      { 
       return acctBalance; 
      } 
      set 
      { 
       if (acctBalance >= 0) 
        acctBalance = value; 
       else 
       { 
        Console.WriteLine("Invalid balance, balance set to 0"); 
        acctBalance = 0; 
       } 
      } 
     } 

     public Account(decimal balance) 
     { 
      acctBalance = balance; 
      AcctBalance = acctBalance; 
     } 
    } 

난 그냥이 그것을 할 올바른 방법이 있는지 확인하려면를

감사합니다.

답변

3

몇 가지 문제가 있지만 사용자의 접근 방식은 대부분 맞습니다. 나는 그것들을 고치고 내가했던 곳의 주석으로 코드에 주석을 달았다.

class Account 
{ 
    private decimal acctBalance = 0; 

    public decimal AcctBalance 
    { 
     get 
     { 
      return acctBalance; 
     } 
     set 
     { 
      //modified to check value instead of acctBalance 
      if (value >= 0) 
       acctBalance = value; 
      else 
      { 
       Console.WriteLine("Invalid balance, balance set to 0"); 
       acctBalance = 0; 
      } 
     } 
    } 

    public Account(decimal balance) 
    { 
     //redundant! Changing AcctBalance changes acctBalance 
     //acctBalance = balance; 
     AcctBalance = balance; 
    } 
} 
+0

그것은 특히, 난 그냥이 그것을 할 수있는 올바른 방법, 또는 적어도 일반적으로 방법 – bruchowski

+0

을 받아 있는지 확인하려면 나를 개인 필드를 설정하는 데 공용 속성을 사용하라는 숙제입니다 그 경우, 나는 나의 대답을 편집 할 것이다. 잠깐, 선생님! –

+0

정확한 지침은 다음과 같습니다. "기본 클래스 계정에는 계정 잔액을 나타 내기 위해 decimal 형식의 개인 인스턴스 변수가 하나 있어야합니다. 클래스는 초기 잔액을 받고 public 속성을 사용하여 인스턴스 변수를 초기화하는 생성자를 제공해야합니다. 이 속성은 초기 잔액의 유효성을 검사하여 0.0보다 크거나 같아야하며 그렇지 않은 경우 잔액을 0.0으로 설정해야하며 설정 한 접근자가 초기 잔액이 유효하지 않다는 오류 메시지를 표시해야합니다. " – bruchowski

관련 문제