2013-03-14 2 views
0

그래서 저는 여러분에게이 질문을 던지고 싶었습니다. 그 간단한 것은 있지만 더 좋은 방법을 찾고 싶었습니다.멤버 변수 string이 대문자인지 확인하는 최선의 방법은 # (getter toUpper)

우리는 항상 대문자이어야하는 데이터를 가지고 있지만 변환해야하는 소문자 입력을 허용합니다.

일반적으로 데이터베이스에 저장할 때 toUpper을 수행합니다.

게이터에서 toUpper을 사용하는 것이 더 나을 것 같았습니다. 논리가 데이터에 더 가깝고이 데이터를 볼 때 Object를 사용하면 항상 대문자가됩니다.

public string Mapping 
{ 
    get 
    { 
     return mapping == null ? mapping : mapping.ToUpper(); 
    } 
    set; 
} 

이 멍청한가요? 나는 Mapping.ToUpper()가 매번 새로운 문자열을 생성 할 것임을 알고 있으므로 바보 같다. 다른 제안?

+1

위의 예는 단순히'StackOverflowException'를 일으킬 것입니다 : 당신의 예에서

, 나는 아마 갈 것입니다. – Oded

+2

새 문자열을 만드는 데 드는 "비용"에 대해 걱정하지 않아도됩니다. 대/소문자 변환은 값싼 작업이며 기껏해야 몇 번만 수행됩니다. –

답변

3

원본 데이터를 유지해야하는 특별한 이유가없는 한, 중간에 데이터를 변환합니다. 이렇게하면 실수로 "나쁜"버전의 데이터를 사용할 수 없습니다 (예 : 백업 필드에 액세스하는 개인 메서드에서).

는 개인적으로 나는 있도록, 재산 세터는 항상 값을 보존하는 것을 선호 : 세터 그것이 전달되는 값을 변경 할

x.MyProperty = someValue; 
Assert(x.MyProperty == someValue); 

경우, 내가 대신 할 수있는 별도의 방법을 쓰기.

public void SetMapUppercase(string value); 
+0

나는 이것을 좋아한다. 재산 밖에서 생각하기. –