프로그래밍을 하다보면 Windows Forms나 Windows Presentation Foundation과 같이 한 단락내에 한 객체에 대해서 여러 속성을 동시에 지정해야 하는 경우가 꼭 있기 마련입니다. VB.NET이나 Object Pascl의 경우 With 절을 이용하여 이런 일을 손쉽게 할 수 있도록 해줍니다만 C#의 경우 마땅히 좋은 방법이 없습니다. 게다가, 이렇게 여러 속성을 나열해놓는 코드를 작성하다보면 코드가 어지럽혀지기 쉬운듯 합니다. Windows Forms나 Windows Presentation Foundation의 경우 대개 디자이너를 이용하여 작업하는 경우가 많으므로 별 다른 문제가 안되지만 가끔 컨트롤을 직접 추가해야 하거나 디자이너가 지원되지 않는 GTK# 등의 환경에서 저 개인적으로 요긴하게 쓰는 방식이 있어서 소개해봅니다. Panel myPanel = new Panel(); 위와 같이 myPanel을 최초로 생성하는 줄 다음에 별 다른 의미 없이 공 Bracket을 열고 myPanel에 관한 코드를 집어넣은 뒤 관련 처리가 끝나면 공 Bracket을 닫는 방식입니다. 이렇게 정리를 해두면 #region이나 #endregion보다 훨씬 읽기 편한것 같습니다. :-) |
'팁'에 해당되는 글 2건
- 2008/07/07 남정현 [팁] 코드 정리
- 2006/01/04 남정현 [팁] Verbatim String에 관해 알아둘 몇 가지
트랙백을 보내세요
트랙백 주소 :: http://rkttu.com/rkttublog/trackback/233
오랫만에 업로드하는 강좌이군요. 그간 별 일 없으셨나요? string test = @"
Welcome to "" My "" Program!"; Verbatim 문자열로 사용할 수 있는 모든 것이 드러난 코드입니다. 따옴표를 이스케이프시키기 위하여 두번 따옴표를 표기했다는 점을 빼면 이스케이프 기호를 한번도 사용하지 않고도 있는 그대로를 가져다 붙인 점이 매우 독특합니다. 이 점을 이용하면 정규표현식과 같이 매우 복잡한 문자열을 보이는 그대로 가져다 쓸 수 있습니다. 즉, 다음과 같은 코드가 가능합니다. string innerCode = @"/// <summary>
/// 대한민국의 주민등록번호 식별 체계에 의하여 제공된 주민등록번호가 올바른 주민등록번호인지의 여부를 판별합니다. /// </summary> /// <remarks> /// 이 메서드는 20세기, 21세기 출생자에 한해서 주민등록번호 유효성 검사를 지원합니다. /// 20세기보다 이전의 출생자의 주민등록번호, 21세기보다 이후의 출생자의 주민등록번호들은 /// 검사 결과가 모두 False로 출력됩니다. /// </remarks> /// <param name=""firstPart"">주민등록번호를 구성하는 앞의 6자리 숫자입니다. 연, 월, 일 순서로 각각 두 자리로 구성된 앞의 6자리입니다.</param> /// <param name=""lastPart"">주민등록번호를 구성하는 뒷쪽의 7자리 숫자입니다. 고유 번호 7자리로 구성되어있습니다.</param> /// <returns>형식에 맞는 주민등록번호이면 True, 맞지 않다면 False를 반환합니다.</returns> public static bool CheckSocialNumber(string firstPart, string lastPart) { string socialNo = firstPart.Trim() + lastPart.Trim(); // 정규식 패턴 문자열입니다. 6자리의 정수 + [1, 2, 3, 4 중 택 1] + 6자리의 정수 string pattern = @""\d{6}[1234]\d{6}""; // 입력 내역과 정규식 패턴이 일치하면 이 조건문을 통과합니다. if(!Regex.Match(socialNo, pattern, RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace).Success) return false; // 20세기 출생자와 21세기 출생자를 구분합니다. string birthYear = ('2' >= socialNo[6]) ? ""19"" : ""20""; // 연도 두 자리를 추출하여 추가합니다. birthYear += socialNo.Substring(0, 2); // 월 단위 두 자리를 추출합니다. string birthMonth = socialNo.Substring(2, 2); // 일 단위 두 자리를 추출합니다. string birthDate = socialNo.Substring(4, 2); try { // 정수로 변환을 시도합니다. 예외가 생기면 catch 블럭으로 이동됩니다. int bYear = int.Parse(birthYear); int bMonth = int.Parse(birthMonth); int bDate = int.Parse(birthDate); // 20세기보다 이전연도, 21세기보다 이후연도, // 월 표기 수가 1보다 작은 값, 월 표기 수가 12보다 큰 값, // 일 표기 수가 1보다 작은 값, 일 표기 수가 12보다 큰 값에 해당되면 // catch 블럭으로 이동됩니다. if(bYear < 1900 || bYear > 2100 || bMonth < 1 || bMonth > 12 || bDate < 1 || bDate > 31) throw new Exception(""잘못된 날짜 표현입니다.""); } catch { return false; } // 고유 알고리즘입니다. int[] buffer = new int [13]; for(int i=0; i<buffer.Length; i++) buffer[i] = Int32.Parse(socialNo[i].ToString()); int summary = 0; int[] multipliers = new int [] { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 }; for(int i=0; i<12; i++) summary += (buffer[i] *= multipliers[i]); return !((11 - (summary % 11)) % 10 != buffer[12]); } "; Verbatim 문자열을 이용하여 코드 자체를 미리 내장하고 프로그램을 실행하는 도중에 동적으로 컴파일할 수 있습니다. 또한 이와 같이 포함된 Verbatim 문자열은 Obfuscator와 같은 도구로 암호화할 수도 있기 때문에 정보를 보호하기 위한 목적으로도 사용할 수 있습니다. |
트랙백을 보내세요
트랙백 주소 :: http://rkttu.com/rkttublog/trackback/114




댓글을 달아 주세요