IT/IT소식2008. 5. 20. 22:59

사용자 삽입 이미지
 MS MVP이자 훈스닷넷 C# Sysop을 맡고 계시는 김수영님을 만나 지난달 시애틀을 다녀온 이야기를 하고자 합니다.

지쏜 : 지난 달에 시애틀을 다녀오셨는데 무슨 일로 얼마간 다녀오셨나요?
수영님 : MS 본사가 있는 시애틀에서는 매년 전 세계 MVP를 대상으로
Microsoft MVP Global Summit 2008 행사가 있습니다. 그 행사에 참여하기 위해 시애틀을 다녀왔습니다. Summit 기간은 4.14 ~ 4.17 4일간이었지만 해외를 나가는 기회가 많지 않기에 ㅋㅋ 앞 뒤로 관광의 목적으로 여유를 두고 12일에 출국해서 19일에 입국했습니다. ㅋㅋ

사용자 삽입 이미지
지쏜 : 뭐니뭐니해도 행사가 궁금한데요~ 행사를 참여하면서 어떤 일을 겪었나요?
수영님 : 여러 공개 행사에서는 각 국의 MVP를 만나 볼 수 있었습니다. 그리고 Microsoft 본사 분들과의 자리도 마련이 되었습니다. 이틀은 Break Session 이 진행이 되었는데요. 대부분의 얘기는 정말 앞으로 나올 기술에 대한 얘기가 많았습니다. Visual Studio 2008 SP1, Silverlight 다음 버전 Overview, 앞으로의 Roadmap , 저는 Visual C#이라 이쪽 부분 Session을 대부분 들었는데요. C# Complier , IDE 팀 등 Microsoft 본사 개발팀을 직접 볼 수 있어 많은 얘기를 들을 수 있는 자리였습니다.


지쏜 : 와우~ 얼리어답터로 저희 보다 먼저 앞으로 나올 기술들을 접하셨군요?!! 제가 알기로 그 행사는 MVP만 가능하다고 알고 있는데요~ 사비를 털어서라도 참여하고자 한다면 꼭 MVP가 아닌 사람도 참여할 수 있지 않나요?
수영님 : Summit 기간 중 2일은 Break Session 이라고 하여 Microsoft 본사의 MSCC에서 각 기술 별로 세미나가 진행이 되었습니다. 그리고 그 외에 많은 전체 행사가 있었는데, 아쉽게도 입장은 MVP NDA에 서명한 분들만 행사 참여가 가능합니다. 하지만, Summit 기간 중 숙박은 지원해 주므로 가족과 같이 오시는 분들도 계십니다.
지쏜 : 돈으로도 안 되는군요 ㅋㅋ 시애틀을 가기 위해서라도 MVP가 되고 싶군요 ^^;

지쏜 : 행사를 통해 보다 앞으로 MS가 주력할 기술들을 빠르게 접하셨는데요. 수영님께서 행사를 통해 보고 느끼고 온 것들을 한국 개발자들에게 전파하실 거라 예상되는데요. 앞으로 일정이나 계획하시는 일이 있나요?
수영님 : 많은 내용이 차기 버전에 대한 논의들이 많아 당장 피부에 와 닫는 내용은 없을 수 있습니다. OTL .. //  하지만, 성능 향상 등을 위한 여러 좋은 얘기가 많이 나왔고 그 내용에 대해 시간을 두고 공유해 나갈 생각 입니다. 몇몇 NDA(비공개 유지 협약) 관련 자료는 제외 되기는 하겠지만 좋은 내용이 많이 있었습니다.
지쏜 : 역시, 훈스닷넷 세미나를 통해 많이 접할 수 있길 바라겠습니다. *^.^*

지쏜 : 혹시 시애틀 Summit 행사에 같이 다녀온 훈스닷넷 식구들이 있었나요?
수영님 : ~ 훈스닷넷 시삽님들 중에도 MVP인분들도 있고 회원 분들 중에도 MVP인분들이 계십니다. 그 중에 개인사정으로 Summit행사에 같이 가지 못한 분들도 계셨는데요. 저와 함께 가신 분들은 Silverlight 시삽인 공인석님, ASP.NET 시삽 서동진님, 그리고 정태호님이구요. 그외 한국 MVP 여러 분들이 참석해 주셨습니다. ^^;

사용자 삽입 이미지

사용자 삽입 이미지










지쏜
: 함께하는 분들이 있어 더 즐거운 시간이었을 것 같은데요. 행사 외에 관광을 하셨는데 생각나신 곳이 있다면... 그리고 그 곳에서 있었던 에피소드도 있다면 한두 가지 들려주세요~
수영님 : ... 에피소드라면 처음 공항에 내려 첫 숙소인 호스텔을 달랑 인터넷 예매 출력물 하나로 찾아가다 보니, 근처에서 한 시간을 헤맸다는…. -.-; 그리고 첫날 같이 가신 분들이랑 시애틀 시내를 보러 관광지도 없이 무작정 걸었었는데요…나중에 보니 지도에 나와 있는 곳을 많이 봤다는.. ㅋ 스타벅스 1호점, Public Market(시애틀 시장), Space Needle(여기는 숙소 근처 였음). 첫 숙소에서 시내까지 걸어서 흠한시간 반이상 걸었었던 것 같은데…. 나중에 보니 모노레일로는 5분도 안 걸렸다는…. ㅎㅎ 현지시간 19일 출발했었는데…그날 시애틀 외곽에는 눈이 펑펑 내렸고요. 그 덕에 하루 종일 뉴스에는 눈 내린다는 얘기뿐 우박에 날씨 정말 많이 추웠어요~ 첫날은 반팔만 입고 다녀도 더울 정도의 날씨였는데 .기온 편차가 아주 심하더라고요

그래도 이번 기회에 관광도 하고 행사 참여해서 유익한 정보도 많이 얻고 즐거운 시간을 보낼 수 있어서 좋았습니다. ㅋㅋ 덕분에 돌아와서는 야근을 하면서 일을 해야 했지만~ 내년엔 더 많은 훈스닷넷 식구들이 함께 갈 수 있으면 좋겠네요~ ^^;

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

사용자 삽입 이미지
지쏜 사진을 통해 보는 시애틀 야경은 정말 잠을 이루지 못하게 하네요 ㅋㅋ 수영님~ 바쁘신 와중에 인터뷰에 응해주셔서 감사하고 마지막에 좋은 말씀도 감사~ 꾸벅^^; 앞으로도 기술 전도사로 활동을 기대하겠습니다.^^;


Posted by 사나에

패턴의 3가지 유형
1. 생성 패턴 : 직접 객체의 인스턴스를 생성하게 하는 대신에 간접적으로 객체를 생성하게 한다. 이것은 어떤 특정한 경우에 어떤 객체를 생성할 필요가 있는지를 결정할 때 프로그램에 유연성을 부여해준다.
2. 구조 패턴 : 객체의 그룹을 복잡한 사용자 인터페이스나 회계 데이터와 같이 더 큰 구조로 구성할 수 있게 한다. 3. 행위 패턴 : 시스템의 객체들 사이에 커뮤니케이션과 복잡한 프로그램에서의 흐름을 제어하는 방법을 정의할 수 있게 한다.

객체지향 접근 방법에 대한 노트
디자인 패턴을 사용하는 기본적인 이유는 클래스를 분리하여 서로에 대하여 너무 많은 것을 알지 못하도록 하는데 있다. 이와 함께 이들 패턴을 사용하는 것은 다시 고안해야하는 수고를 덜어주며, 다른 프로그래머가 쉽게 이해할 수 있는 용어로 간결하게 여러분의 프로그래밍 접근 방법을 설명할 수 있게 한다.
객체지향 프로그래머는 클래스를 분리하기 위해 여러 전략을 사용하며, 여기에는 캡슐화와 상속성이 포함된다. 객체지향 기능을 제고하는 거의 모든 언어는 상속성을 지원한다. 부모 클래스에서 상속되는 클래스는 해당 부모 클래스의 모든 메서드에 접근할 수 있다. 또한 비공개가 아닌 모든 변수에도 접근할 수 있다. 그러나 클래스를 상속성 계층도로 시작하면 지나치게 여러분 스스로를 제한 할수 있을뿐만 아니라, 특정한 메서드 구현이라는 짐을 져야 하는 경우도 있다. 이걸을 우려하여 이 책은 다음과 같이 제안한다.

[구현 자체에 프로그램하는 것이 아니라 인터페이스에 프로그램 하라.]
이것을 간단하게 설명하면, 클래스 계층도 상위에는 추상 클래스나 인터페이스를 정의해야 한다는 것이다. 추상클래스나 인터페이스는 어떠한 메서드도 구현하고 있지 않으며, 단지 해당 클래스가 지원하는 메서드를 정의 할 뿐이다. 이렇게 하면, 모든 파생클래스에서는 좀더 자유롭게 자신의 목적에 적합한 방식으로 이들 메서드를 구현할 수 있게 된다. 그리고 C#은 단지 인터페이스만 지원하고 상속성을 지원하지 않기 때문에 C#구문에서 이것은 아주 잘 적용될 수 있다.

객체 합성(Object composition)
단순히 다른 객체를 포함하는 객체를 생성하는 것이다. 즉, 다른 객체에 여러 객체를 캡슐화 하는 것이다. 많은 초보 객체지향 프로그래머들이 상속성을 사용하여 모든 문제를 해결하려고 하지만, 좀 더 정교한 프로그램을 작성하려고 할때 객체 합성의 이점에 감사한 마음을 갖게 될 것이다. 여러분의 새로운 객체는 부모 클래스의 모든 메서드를 가질 필요없이 목적에 맞는 인터페이스를 제공할 수 있다.

[상속성 보다는 객체 합성을 사용하라.]
결국은 개발에 있어 프로그래머들이 재사용 가능하게끔 아키텍처를 설계하는것. ==> 디자인

패턴
프레임웍 초기에 자주 나오는 개념
스몰토크모델-뷰-컨트롤러 프레임웍(Model-View-Controller Framework for Smalltalk) MVC패턴이다. 컨트롤러, 뷰, 데이터 모델 이 세가지가 제한된 연결 방식으로 서로 대화하는 위의 세 객체는 강력한 디자인 패턴의 예이다.
디자인 패턴은 객체들이 각자의 데이터 모델과 메서드에 얽히지 않고 서로 커뮤니테이션하는 방법을 기술한다. 이러한 분할을 유지하는 것은 항상 좋은 객체지향프로그래밍의 목표였으며, 객체가 자신의 일에만 집중할 수 있도록 했다면 이미 여러분은 몇개의 공통적인 디자인 패턴을 사용해본 것이다.
디자인 패턴은 1990년 초에 GUI 애플리케이션 프레임웍인 ET++에 포함된 패턴을 기술하였던 Erich Gamma에 의해 좀 더 공식적으로 논의 되기 시작하였다.(1992).

디자인 패턴의 정의
 생활속에서 어떤 일을 하는 방식에 대해 이야기하며 항상 어떤 패턴이 반복되고 있다는 걸 알것이다.

- 디자인 패턴은 반복적으로 발견하게 되는 걸계 문제에 대한 반복적인 솔루션이다.
- 디자인 패턴은 소프트웨어 개발 영역에서 일정한 작업을 수행하는 방법을 설명하는 규칙의 집합을 구성한다.
- 디자인 패턴은 반복적인 아키텍처 설계 주제들의 재사용성에 대해 초점을 맞추며, 프레임웍은 세부 설계와 구현에 초점을 맞춘다.
- 패턴은 특정한 설계 상황에서 야기되는 반복적인 설계 문제를 설명하고 이에 대한 솔류션을 제시한다.
- 패턴은 하나의 클래스와 인스턴스 또는 컴포넌트의 단계를 뛰어넘는 추상화를 식별하고 상세화한다.


==>객체들간의 상화작용에 대한것.





Posted by 사나에
Sunny/써니생각2008. 4. 18. 03:03
http://member.auction.co.kr/announce/view.aspx?no=2184 

위의 페이지에서 최근에 이슈화된 옥션해킹사건에서 자신의 정보가 해당되는지 체크가 가능하다.
쩝... 해킹이 있을 무렵 노트북을 팔려고 옥션을 자주 들어갔었는데....
혹시나 하고 조회해봤는데 역시나 기본정보가 유출되었다.. ㅠㅠ
뭐... 소송도하고 그러는데... 개발자의 입장에서 참 씁씁해진다.
개발자는 아무리 해킹을 막기위해 암호화를 하고 보안을 철저히해서 개발을 하나 어느 누군가는 그것을 알아내기위해  연구를 한다고 생각하니....
게다가 옥션이 닷넷으로 커스터마이징을 하고 이런일이 있어 더욱더 마음은 편하지않다.
닷넷이 기존보다 보안적으로 더 안정하다고 광고하지않았나... 근데 이게 뭔가...
오히려 ASP시절이 더 안정적인게 아닌가...쩝....
이번 옥션해킹을 보면서 많은 생각에 접어든다.... 과연 난 어떤 개발자가 되어야할지....

사용자 삽입 이미지
Posted by 사나에
개발 이야기/Visual C#2008. 4. 13. 18:29
문자열을 다루때 문자열 형식 지정 및 변환작업을 많이하게된다.
string.Format 형식이 뭐가 있을까? 간단히 바꾸는 방법을 정리해보자.

숫자를 문자열로~~
형식
지정자
이름 설명
0 0 자리 표시자 형식을 지정할 값이 형식 문자열의 '0'이 표시된 위치에 숫자를 가지고 있으면
해당 숫자가 결과 문자열로 복사됩니다.
소수점 앞 가장 왼쪽의 '0'과 소수점 뒤 가장 오른쪽 '0'의 위치는
결과 문자열에 항상 표시될 자릿수의 범위를 결정합니다.
"00" 지정자를 사용하면 해당 값이 소수점 뒤 첫째 자리에서 반올림되며
항상 0 이상의 정수 값으로 표시됩니다. 예를 들어, 34.5의 형식을 "00"으로 지정하면 결과는 35가 됩니다.
# 10진수 자리 표시자 형식을 지정할 값이 형식 문자열의 '#'이 표시된 위치에 숫자를 가지고 있으면
해당 숫자가 결과 문자열로 복사되고, 그렇지 않으면 결과 문자열의 해당 위치에 아무 것도 저장되지 않습니다.
0이 유효 자릿수가 아니면 이 지정자는 문자열에서 '0'이 유일한 숫자라 할지라도
'0'을 표시하지 않습니다. 표시되는 숫자에서 0이 유효 자릿수이면 이 지정자는 '0'을 표시합니다.
"##" 형식 문자열을 사용하면 해당 값이 소수점 뒤 첫째 자리에서 반올림되며
항상 0 이상의 정수로 표시됩니다. 예를 들어, 34.5의 형식을 "##"으로 지정하면 결과는 35가 됩니다.
. 소수점 형식 문자열의 첫 번째 '.' 문자는 형식이 지정될 값에서 소수 구분 기호의 위치를 결정하며, 다른 '.' 문자는 무시됩니다.
소수 구분 기호로 사용되는 실제 문자는 형식 지정을 제어하는 NumberFormatInfo의 NumberDecimalSeparator 속성에 의해 결정됩니다.
, 1000 단위 구분 기호 및 숫자 배율 ',' 문자는 1000 단위 구분 기호 지정자와 숫자 배율 지정자로 사용됩니다.
1000 단위 구분 기호 지정자: 두 개의 10진수 자리 표시자(0 또는 #) 사이에
정수 계열 자릿수의 형식을 지정하는 하나 이상의 ',' 문자가 지정된 경우,
정수 계열 출력 부분의 각 숫자 그룹 사이에 그룹 구분 문자가 삽입됩니다.
현재 NumberFormatInfo 개체의 NumberGroupSeparatorNumberGroupSizes
속성은 숫자 그룹 구분 기호로 사용되는 문자와 각 숫자 그룹의 크기를 결정합니다.
예를 들어, 문자열 "#,#"과 고정 culture를 사용하여 숫자 1000의 형식을 지정할 경우 "1,000"이 출력됩니다.
숫자 배율 지정자: 명시적 또는 암시적 소수점의 바로 왼쪽에 하나 이상의 ',' 문자가 지정된 경우
형식을 지정할 숫자는 숫자 배율 지정자가 나타날 때마다 1000으로 나뉩니다.
예를 들어, 문자열 "0,,"을 사용하여 숫자 100000000의 형식을 지정할 경우 "100"이 출력됩니다.
동일한 형식 문자열에 1000 단위 구분 기호와 숫자 배율 지정자를 함께 사용할 수 있습니다.
예를 들어, 문자열 "#,0,,"과 고정 culture를 사용하여 숫자 1000000000의 형식을 지정할 경우 "1,000"이 출력됩니다.
% 백분율 자리 표시자 형식 문자열에 '%' 문자가 있으면 형식이 지정되기 전에 해당 수에 100이 곱해집니다.
형식 문자열에서 '%'가 표시된 위치에는 숫자 자체에서 적절한 기호가 삽입됩니다.
사용되는 백분율 문자는 현재 NumberFormatInfo 클래스에 의해 결정됩니다.
E0 과학적 표기법 형식 문자열에 "E", "E+", "E-", "e", "e+" 또는 "e-" 문자열이 표시되고 바로 뒤에
적어도 하나의 '0' 문자가 오면, 해당 수와 지수 사이에 'E' 또는 'e'가 삽입되는 과학적 표기법으로 형식이 지정됩니다.
과학적 표기법 표시기 뒤에 오는 '0' 문자의 개수는 이 숫자의 지수로 나타낼 최소 자릿수를 결정합니다.
"E+" 및 "e+" 형식은 기호 문자(더하기나 빼기)가 지수보다 항상 앞에 와야한다는 것을 나타냅니다.
"E", "E-", "e" 또는 "e-" 형식은 기호 문자가 음의 지수 앞에만 온다는 것을 나타냅니다.
E+0
E-0
e0
e+0
e-0
\ 이스케이프 문자 C# 및 C++에서 백슬래시 문자가 오면 형식 문자열의 다음 문자가 이스케이프 시퀀스로 해석됩니다.
이것은 '\n'(새 줄)처럼 전통적인 형식 지정 시퀀스에서 사용합니다.
일부 언어에서 이스케이프 문자를 리터럴로 사용할 때는, 이 이스케이프 문자 앞에 이스케이프 문자를 넣어야 합니다.
그렇지 않으면 컴파일러에서 이 문자를 이스케이프 시퀀스로 해석합니다. '\'를 표시하려면 "\\" 문자열을 사용합니다.
Visual Basic에서는 이 이스케이프 문자를 지원하지 않지만 ControlChars에서 같은 기능을 제공합니다.
'ABC' 리터럴 문자열 작은따옴표나 큰따옴표로 묶은 문자는 결과 문자열에 복사되며 형식 지정에 영향을 주지 않습니다.
"ABC"
; 섹션 구분 기호 ';' 문자는 형식 문자열에서 양수, 음수 및 0 섹션을 구분하는 데 사용됩니다.
기타 다른 모든 문자 다른 모든 문자는 결과 문자열에 복사되며 형식 지정에는 영향을 주지 않습니다.


DateTime 문자열 지정 형식~~

형식
지정자
이름 설명
d 간단한 날짜 패턴 현재 ShortDatePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "MM/dd/yyyy"입니다.
D 자세한 날짜 패턴 현재 LongDatePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "dddd, dd MMMM yyyy"입니다.
f 전체 날짜/시간 패턴(간단한 시간) 자세한 날짜(D) 패턴과 간단한 시간(t) 패턴을 공백으로 구분하여 조합한 형식을 나타냅니다.
F 전체 날짜/시간 패턴(자세한 시간) 현재 FullDateTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "dddd, dd MMMM yyyy HH:mm:ss"입니다.
g 일반 날짜/시간 패턴(간단한 시간) 간단한 날짜(d) 패턴과 간단한 시간(t) 패턴을 공백으로 구분하여 조합한 형식을 나타냅니다.
G 일반 날짜/시간 패턴(자세한 시간) 간단한 날짜(d) 패턴과 자세한 시간(t) 패턴을 공백으로 구분하여 조합한 형식을 나타냅니다.
M 또는 m 월 일 패턴 현재 MonthDayPattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "MMMM dd"입니다.
o 라운드트립 날짜/시간 패턴 표준 시간대 정보를 유지하는 패턴을 사용하여 사용자 지정 DateTime 형식 문자열을 나타냅니다. 이 패턴은 Kind 속성을 포함하여 DateTime 형식을 텍스트로 라운드트립합니다. 그런 다음 형식이 지정된 문자열을 Parse 또는 ParseExact와 올바른 Kind 속성 값을 사용하여 다시 구문 분석할 수 있습니다.
사용자 지정 형식 문자열은 "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"입니다.
이 지정자의 패턴은 표준으로 정의되어 있습니다. 따라서 이 패턴은 사용된 culture나 제공된 형식 공급자에 관계없이 항상 같습니다.
R 또는 r RFC1123 패턴 현재 RFC1123Pattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다. 이 패턴은 표준으로 정의되어 있으며 해당 속성은 읽기 전용입니다. 따라서 이 패턴은 사용된 culture나 제공된 형식 공급자에 관계없이 항상 같습니다.
사용자 지정 형식 문자열은 "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'"입니다.
형식을 지정해도 해당 형식이 지정되는 DateTime 개체의 값은 수정되지 않습니다. 따라서 응용 프로그램에서는 이 형식 지정자를 사용하기 전에 값을 UTC(지역 표준시)로 변환해야 합니다.
s 정렬 가능한 날짜/시간 패턴;
ISO 8601에 부합
현재 SortableDateTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다. 이 패턴은 표준으로 정의되어 있으며 해당 속성은 읽기 전용입니다. 따라서 이 패턴은 사용된 culture나 제공된 형식 공급자에 관계없이 항상 같습니다.
사용자 지정 형식 문자열은 "yyyy'-'MM'-'dd'T'HH':'mm':'ss"입니다.
t 간단한 시간 패턴 현재 ShortTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "HH:mm"입니다.
T 자세한 시간 패턴 현재 LongTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "HH:mm:ss"입니다.
u 정렬 가능한 유니버설 날짜/시간 패턴 현재 UniversalSortableDateTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다. 이 패턴은 표준으로 정의되어 있으며 해당 속성은 읽기 전용입니다. 따라서 이 패턴은 사용된 culture나 제공된 형식 공급자에 관계없이 항상 같습니다.
사용자 지정 형식 문자열은 "yyyy'-'MM'-'dd HH':'mm':'ss'Z"입니다.
날짜 및 시간의 형식이 지정될 때 표준 시간대는 변환되지 않습니다. 따라서 응용 프로그램에서는 이 형식 지정자를 사용하기 전에 현지 날짜 및 시간을 UTC(지역 표준시)로 변환해야 합니다.
U 정렬 가능한 유니버설 날짜/시간 패턴 현재 FullDateTimePattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
이 패턴은 전체 날짜/자세한 시간(F) 패턴과 동일합니다. 그러나 형식 지정 작업이 형식을 지정할 DateTime 개체에 해당하는 UTC(지역 표준시)에 대해 수행된다는 점이 다릅니다.
Y 또는 y 년 월 패턴 현재 YearMonthPattern 속성으로 정의된 사용자 지정 DateTime 형식 문자열을 나타냅니다.
예를 들어, 고정 culture에 대한 사용자 지정 형식 문자열은 "yyyy MMMM"입니다.
기타 모든 단일 문자 알 수 없는 지정자 알 수 없는 지정자는 런타임 형식 예외를 throw합니다.


예제

 // This code example demonstrates the ToString(String) and
// ToString(String, IFormatProvider) methods for integral and
// floating-point numbers, in conjunction with the standard
// numeric format specifiers.
// This code example uses the System.Int32 integral type and
// the System.Double floating-point type, but would yield
// similar results for any of the numeric types. The integral
// numeric types are System.Byte, SByte, Int16, Int32, Int64,
// UInt16, UInt32, and UInt64. The floating-point numeric types
// are Decimal, Single, and Double.

using System;
using System.Globalization;
using System.Threading;

class Sample
{
    public static void Main()
    {
// Format a negative integer or floating-point number in various ways.
    int    integralVal = -12345;
    double floatingVal = -1234.567d;

    string msgCurrency =    "(C) Currency: . . . . . . ";
    string msgDecimal  =    "(D) Decimal:. . . . . . . ";
    string msgScientific =  "(E) Scientific: . . . . . ";
    string msgFixedPoint =  "(F) Fixed point:. . . . . ";
    string msgGeneral =     "(G) General (default):. . ";
    string msgNumber =      "(N) Number: . . . . . . . ";
    string msgPercent =     "(P) Percent:. . . . . . . ";
    string msgRoundTrip =   "(R) Round-trip: . . . . . ";
    string msgHexadecimal = "(X) Hexadecimal:. . . . . ";

    string msg1 = "Use ToString(String) and the current thread culture.\n";
    string msg2 = "Use ToString(String, IFormatProvider) and a specified culture.\n";
    string msgCulture     = "Culture:";
    string msgIntegralVal = "Integral value:";
    string msgFloatingVal = "Floating-point value:";

    CultureInfo ci;
//
    Console.Clear();
    Console.WriteLine("Standard Numeric Format Specifiers:\n");
// Display the values.
    Console.WriteLine(msg1);

// Display the thread current culture, which is used to format the values.
    ci = Thread.CurrentThread.CurrentCulture;
    Console.WriteLine("{0,-26}{1}", msgCulture, ci.DisplayName);

// Display the integral and floating-point values.
    Console.WriteLine("{0,-26}{1}", msgIntegralVal, integralVal);
    Console.WriteLine("{0,-26}{1}", msgFloatingVal, floatingVal);
    Console.WriteLine();

// Use the format specifiers that are only for integral types.
    Console.WriteLine("Format specifiers only for integral types:");
    Console.WriteLine(msgDecimal     + integralVal.ToString("D"));
    Console.WriteLine(msgHexadecimal + integralVal.ToString("X"));
    Console.WriteLine();

// Use the format specifier that is only for the Single and Double
// floating-point types.
    Console.WriteLine("Format specifier only for the Single and Double types:");
    Console.WriteLine(msgRoundTrip   + floatingVal.ToString("R"));
    Console.WriteLine();

// Use the format specifiers that are for integral or floating-point types.
    Console.WriteLine("Format specifiers for integral or floating-point types:");
    Console.WriteLine(msgCurrency    + floatingVal.ToString("C"));
    Console.WriteLine(msgScientific  + floatingVal.ToString("E"));
    Console.WriteLine(msgFixedPoint  + floatingVal.ToString("F"));
    Console.WriteLine(msgGeneral     + floatingVal.ToString("G"));
    Console.WriteLine(msgNumber      + floatingVal.ToString("N"));
    Console.WriteLine(msgPercent     + floatingVal.ToString("P"));
    Console.WriteLine();

// Display the same values using a CultureInfo object. The CultureInfo class
// implements IFormatProvider.
    Console.WriteLine(msg2);

// Display the culture used to format the values.
// Create a European culture and change its currency symbol to "euro" because
// this particular code example uses a thread current UI culture that cannot
// display the euro symbol (€).
    ci = new CultureInfo("de-DE");
    ci.NumberFormat.CurrencySymbol = "euro";
    Console.WriteLine("{0,-26}{1}", msgCulture, ci.DisplayName);

// Display the integral and floating-point values.
    Console.WriteLine("{0,-26}{1}", msgIntegralVal, integralVal);
    Console.WriteLine("{0,-26}{1}", msgFloatingVal, floatingVal);
    Console.WriteLine();

// Use the format specifiers that are only for integral types.
    Console.WriteLine("Format specifiers only for integral types:");
    Console.WriteLine(msgDecimal     + integralVal.ToString("D", ci));
    Console.WriteLine(msgHexadecimal + integralVal.ToString("X", ci));
    Console.WriteLine();

// Use the format specifier that is only for the Single and Double
// floating-point types.
    Console.WriteLine("Format specifier only for the Single and Double types:");
    Console.WriteLine(msgRoundTrip   + floatingVal.ToString("R", ci));
    Console.WriteLine();

// Use the format specifiers that are for integral or floating-point types.
    Console.WriteLine("Format specifiers for integral or floating-point types:");
    Console.WriteLine(msgCurrency    + floatingVal.ToString("C", ci));
    Console.WriteLine(msgScientific  + floatingVal.ToString("E", ci));
    Console.WriteLine(msgFixedPoint  + floatingVal.ToString("F", ci));
    Console.WriteLine(msgGeneral     + floatingVal.ToString("G", ci));
    Console.WriteLine(msgNumber      + floatingVal.ToString("N", ci));
    Console.WriteLine(msgPercent     + floatingVal.ToString("P", ci));
    Console.WriteLine();
    }
}
/*
This code example produces the following results:

Standard Numeric Format Specifiers:

Use ToString(String) and the current thread culture.

Culture:                  English (United States)
Integral value:           -12345
Floating-point value:     -1234.567

Format specifiers only for integral types:
(D) Decimal:. . . . . . . -12345
(X) Hexadecimal:. . . . . FFFFCFC7

Format specifier only for the Single and Double types:
(R) Round-trip: . . . . . -1234.567

Format specifiers for integral or floating-point types:
(C) Currency: . . . . . . ($1,234.57)
(E) Scientific: . . . . . -1.234567E+003
(F) Fixed point:. . . . . -1234.57
(G) General (default):. . -1234.567
(N) Number: . . . . . . . -1,234.57
(P) Percent:. . . . . . . -123,456.70 %

Use ToString(String, IFormatProvider) and a specified culture.

Culture:                  German (Germany)
Integral value:           -12345
Floating-point value:     -1234.567

Format specifiers only for integral types:
(D) Decimal:. . . . . . . -12345
(X) Hexadecimal:. . . . . FFFFCFC7

Format specifier only for the Single and Double types:
(R) Round-trip: . . . . . -1234,567

Format specifiers for integral or floating-point types:
(C) Currency: . . . . . . -1.234,57 euro
(E) Scientific: . . . . . -1,234567E+003
(F) Fixed point:. . . . . -1234,57
(G) General (default):. . -1234,567
(N) Number: . . . . . . . -1.234,57
(P) Percent:. . . . . . . -123.456,70%

*/


출처 : http://msdn.microsoft.com/ko-kr/library/fht0f5be(VS.80).aspx
Posted by 사나에
개발 이야기/Visual C#2008. 4. 13. 18:29
Hoons .NET 정기 모임 CodeDom 주제발표





Posted by 사나에