2011-07-18 2 views
0

접근 자 블록이 실행되는 동안 현재 속성 값을 가져 오는 방법은 무엇입니까? 나는이 같은 일부 처리하려고 :get 접근 자의 현재 속성 값

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime? birthDate 
{ 
    get 
    { 
     return CommonClass.GetDT(birthDate); 
    } 
    set 
    { 
     birthDate = CommonClass.GetDT(value); 
    } 
} 

public class CommonClass 
{  
    public static DateTime? GetDT(DateTime v) 
    { 
     if (v == DateTime.MinValue) 
     { 
      return null; 
     } 
     else 
     { 
      return v; 
     } 
    } 
    public static DateTime? GetDT(DateTime? v) 
    { 
     if (!v.HasValue) 
     { 
      return null; 
     } 
     else 
     { 
      return v; 
     } 
    } 
} 

하지만이 코드는 밖으로 분쇄된다. 당신이 마이크로 소프트의 튜토리얼에 보면하지만 당신은 자기 속성 값을 사용할 수 있도록 몇 가지 샘플을 볼 수

public string Name 
{ 
    get 
    { 
     return name != null ? name : "NA"; 
    } 
} 

Here

답변

4

변수 및 메소드 이름은 대소 문자를 구분하므로 "이름"과 "이름"이 다릅니다.

private string name; // the name field 
public string Name // the Name property 
{ 
    get 
    { 
     return name; 
    } 
} 

그래서

private DateTime? birthDate 
public DateTime? BirthDate 
{ 
    get 
    { 
     return CommonClass.GetDT(birthDate); 
    } 
    set 
    { 
     birthDate = CommonClass.GetDT(value); 
    } 
} 
+0

완벽 해요! 그래서 쉽고 우아한 솔루션! 정말 고맙습니다! – kseen

1

속성의 get 및 set 접근은 단지 방법이 있습니다. 그들은 다음과 동일합니다 : -

public string get_Name() 
{ 
    ... 
} 

public void set_Name(string value) 
{ 
    ... 
} 

그런 생각을하면, 그들에 대해 특별한 것이 없다는 것을 알 수 있습니다. 특별한 '자아'또는 '현재 가치'는 없습니다.

두 번째 코드 예에서는 속성 값을 저장하는 데 사용되는 'name'이라는 필드가 있어야합니다. 이것과 그 밖의 것은 그 속성의 '현재 가치'입니다.

+0

그래로 당신을 변경, 아담, 난을 참조하십시오. 그러나 첫 번째 코드 샘플을 사용하려고하면 무한 루프에 빠지면서 생년월일을 반복해서 얻는 것처럼 보입니다 (이 줄은'Return CommonClass.GetDT (birthDate);'). 결과적으로 스택 오버플로 예외 오류가 발생합니다. 감사! – kseen

+0

@Adam :'get_Name()' –

+0

@Jalal : 감사합니다. –