성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 그냥 RSS Reader 기능과 약간의 UI 편의성 때문에 사용...
[이종효] 오래된 소프트웨어는 보안 위협이 되기도 합니다. 혹시 어떤 기능...
[정성태] @Keystroke IEEE의 문서를 소개해 주시다니... +_...
[손민수 (Keystroke)] 괜히 듀얼채널 구성할 때 한번에 같은 제품 사라고 하는 것이 아...
[정성태] 전각(Full-width)/반각(Half-width) 기능을 토...
[정성태] Vector에 대한 내용은 없습니다. Vector가 닷넷 BCL...
[orion] 글 읽고 찾아보니 디자인 타임에는 InitializeCompon...
[orion] 연휴 전에 재현 프로젝트 올리자 생각해 놓고 여의치 않아서 못 ...
[정성태] 아래의 글에 정리했으니 참고하세요. C# - Typed D...
[정성태] 간단한 재현 프로젝트라도 있을까요? 저런 식으로 설명만 해...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 ext='true' style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지</h1> <p> <br /> 기존에 출판되었던 "시작하세요! C# 프로그래밍: 기본 문법부터 실전 예제까지"의 개정판이 나왔습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 ; <a target='tab' href='http://www.yes24.com/24/goods/19427525'>http://www.yes24.com/24/goods/19427525</a> </pre> <br /> 이 책에서 바뀐 점은 크게 다음의 2가지입니다.<br /> <br /> <ul> <li>C# 6.0 문법 설명 추가</li> <li>기존 책의 3부에 해당하는 내용은 책에서 제거하고 PDF로 공개</li> </ul> <br /> 당연히 가격은 내리고 책의 두께가 가벼워졌겠지요. ^^ 그 외에 자잘하게 다음의 변경 사항이 있습니다.<br /> <br /> <ul> <li>목차를 4단계까지 구성해서 책 내용을 좀 더 쉽게 찾을 수 있습니다.</li> <li>인덱스 단어를 기존 책보다 2.5배 분량으로 늘렸습니다.</li> <li>책의 소스코드가 개별 다운로드가 아닌 단일 .sln 파일로 구성되었습니다.</li> </ul> <br /> 3부의 내용을 담은 PDF 파일은 다음의 경로에서 다운로드 받을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 공개된 3부 - PDF ; <a target='tab' href='https://www.sysnet.pe.kr/book/cs6_part3.pdf'>https://www.sysnet.pe.kr/book/cs6_part3.pdf</a> 책에도 포함되고 공개도 된 부록 - PDF ; <a target='tab' href='https://www.sysnet.pe.kr/book/cs6_appendix.pdf'>https://www.sysnet.pe.kr/book/cs6_appendix.pdf</a> </pre> <br /> 책에서 혹시 이해가 안되거나 궁금하신 부분이 있으면 다음의 게시판을 활용해 주시면 답변을 드리도록 하겠습니다. (물론, 오타나 문장이 이상한 부분이 있는 것도 게시판을 통해 알려주시면 반영하겠습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 질문 답변 게시판 ; <a target='tab' href='http://www.sysnet.pe.kr/3/0'>http://www.sysnet.pe.kr/3/0</a> </pre> <br /> 책에 있는 예제는 다음의 경로에서 다운로드 받을 수 있고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 소스코드 다운로드(단일 ZIP 파일) ; <a target='tab' href='https://www.sysnet.pe.kr/book/sample_code.zip'>https://www.sysnet.pe.kr/book/sample_code.zip</a> * 소스코드를 비주얼 스튜디오에서 열은 후, 테스트하고 싶은 프로젝트를 "시작 프로젝트로 설정" 메뉴로 지정하면 됩니다. (참고로, "시작 프로젝트로 설정" 메뉴에 대해서는 책의 301페이지에 있는 "Note" 내용에서 좀 더 자세하게 알 수 있습니다.) 6장에서 만드는 SQL 데이터베이스 파일 ; <a target='tab' href='https://www.sysnet.pe.kr/book/book2_db_file.zip'>https://www.sysnet.pe.kr/book/book2_db_file.zip</a> </pre> <br /> 압축을 풀면 나오는 "CSharp6.sln" 파일을 비주얼 스튜디오에서 열면 다음과 같이 솔루션 탐색기(Solution Explorer)에서 장(Chapter) 별로 나누어져 있어 찾기 편하도록 구성했습니다.<br /> <br /> <img alt='sample_code_sln.png' src='/SysWebRes/bbs/sample_code_sln.png' /><br /> <br /> 책에서 "예제" 제목이 달린 소스 코드마다 완전히 실행 가능한 C# 프로젝트를 만들었습니다. 또한, "예제" 제목이 달리지 않은 소스코드도 모두 "부가코드-[번호].txt"라는 파일에 담아 두었습니다. 각각의 txt 파일도 복사해서 붙여넣으면 컴파일이 되는 하나의 독립적인 예제입니다.<br /> <br /> 이번에도 책에 포함된 모든 그림 파일을 다음의 경로에 공개해 두었습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 책에 포함된 그림 ; <a target='tab' href='https://www.sysnet.pe.kr/book/cs6_img.zip'>https://www.sysnet.pe.kr/book/cs6_img.zip</a> </pre> <br /> 캡쳐된 그림 이외에 다이어그램을 그리기 위해 사용한 PPT 파일도 아래에 공개했습니다. (일부 다이어그램은 출판사 측에서 인쇄를 위해 재편집을 했기 때문에 원본과 약간 다를 수 있습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 다이어그램 원본 PPT 파일 ; <a target='tab' href='https://www.sysnet.pe.kr/book/diagram2.pptx'>https://www.sysnet.pe.kr/book/diagram2.pptx</a> </pre> <br /> 마지막으로 공개된 PDF의 13장에서 다루고 있는 파워포인트 제어 실습 예제는 현재 윈도우 폰의 경우 직접 다운로드 받을 수 있지만, 구글 앱 스토어에 등록된 것은 내려간 상태입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 윈도우 폰 - OfficeController ; <a target='tab' href='http://www.windowsphone.com/s?appid=db531773-4b34-42a2-a61a-fcfb7353f2e7'>http://www.windowsphone.com/s?appid=db531773-4b34-42a2-a61a-fcfb7353f2e7</a> <!-- 안드로이드 폰 - OfficePresenter ; <a target='tab' href='https://play.google.com/store/apps/details?id=kr.pe.sysnet.OfficePresenter'>https://play.google.com/store/apps/details?id=kr.pe.sysnet.OfficePresenter</a--> </pre> <br /> 대신 다음의 사이트에 소스코드가 공개되어 있으니 참고하실 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > OfficePresenter 소스코드 ; <a target='tab' href='https://github.com/stjeong/OfficePresenter'>https://github.com/stjeong/OfficePresenter</a> (다운로드 방법: 위 링크의 우측 하단에 "Download ZIP" 버튼을 누르면 됩니다.) </pre> <br /> 참고로, Android 버전의 경우 <a target='tab' href='https://store.xamarin.com//'>Xamarin 제품</a>을 이용해서 C# 소스코드로 만들어졌습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> <br /><div style='font-size: 12pt; font-family: Malgun Gothic, Consolas; color: #2211AA; text-align: left; font-weight: bold'>[정오표]</div> <br /> 정말 기묘한 일입니다. ^^; 출판사 측과 최종 원고를 확정짓는 시점에 언제나 저는 확신합니다. '이젠 오타가 없겠지!'라며!!!<br /> <br /> 출판 작업이 시작되어 더 이상 바꿀 수 없는 이 시점에, 다시 한번 책의 원고를 들여다 보는데 오타가 보입니다. 휴~~~, 다음 번엔 정말로 단 하나의 오타도 없을 거라 다짐하면서... 여러분의 도움도 아울러 부탁드리겠습니다. (오타가 없는 그날까지!)<br /> <br /> 정오표는 오류의 경중에 따라 나누는 것이 필요할 것 같아서 2개로 분리했습니다. 중요한 것은 아래에 나열했고, 중요하지 않은 정오표는 다음의 글로 분리했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2) ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/10861'>http://www.sysnet.pe.kr/2/0/10861</a> </pre> <br /> 또한 아래의 정오표는 초판 발행본에 한해서 적용된 것입니다. 2판 인쇄물을 구매하신 분들은 다음의 정오표를 참고하시면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2쇄 정오표) ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11019'>http://www.sysnet.pe.kr/2/0/11019</a> </pre> <br /> * 1부 정오표 *<br /> <table class="commentlist" style='width: 100%' border="2" > <tr> <th width='200px'>위치</th> <th>변경 전</th> <th>변경 후</th> </tr> <tr> <td>3.1.1 정수형 기본 타입<br /> (56 페이지, 하단으로부터 2번째 줄)</td> <td> 2<sup>16</sup> = 65,535 </td> <td> 2<sup>16</sup> = <span style='color: blue; font-weight: bold'>65,536</span> </td> </tr> <tr> <td>3.5.1.3 switch 문<br /> (90 페이지, 중간 예제 코드)</td> <td> char ch = 'F': </td> <td> char ch = <span style='color: blue; font-weight: bold'>'F';</span> </td> </tr> <tr> <td>4.3.1 형변환<br /> (152 페이지, 하단으로부터 1번째 줄)</td> <td> '정수(자연수와 그것의 음수)' </td> <td> '정수(<span style='color: blue; font-weight: bold'>자연수 및 그것의 음수와 0</span>)' </td> </tr> <tr> <td>4.3.1 형변환<br /> (196 페이지, 중앙 예제 코드 아래)</td> <td> 이렇게 메서드를 가리킬 수 타입을 </td> <td> 이렇게 메서드를 가리킬 수 <span style='color: blue; font-weight: bold'>있는</span> 타입을 </td> </tr> <tr> <td>4.5.1.3 델리게이트 - 콜백 메서드<br /> (203 페이지, 그림 4.12내의 코드 영역)</td> <td> public INT GetResult() </td> <td> public <span style='color: blue; font-weight: bold'>int</span> GetResult() </td> </tr> <tr> <td>4.5.1.3 델리게이트 - 콜백 메서드<br /> (203 페이지, 그림 4.12내의 코드 영역)</td> <td> Target target = new Target()<br /> target.D(this)<br /> </td> <td> Target target = new <span style='color: blue; font-weight: bold'>Target();</span><br /> target.<span style='color: blue; font-weight: bold'>Do</span>(this);<br /> </td> </tr> <tr> <td>4.5.1.4 인터페이스 - IEnumerable 인터페이스<br /> (223 페이지 예제 코드)</td> <td> public USBEnumerator(USB[] usb)<br /> {<br /> list = usb;<br /> }<br /> <br /> public bool MoveNext()<br /> {<br /> if (pos > length)<br /> {<br /> return false;<br /> }<br /> <br /> pos++;<br /> return true;<br /> } </td> <td> public USBEnumerator(USB[] usb)<br /> {<br /> list = usb;<br /> <span style='color: blue; font-weight: bold'>length = usb.Length</span>;<br /> }<br /> <br /> public bool MoveNext()<br /> {<br /> if (<span style='color: blue; font-weight: bold'>pos >= length - 1</span>)<br /> {<br /> return false;<br /> }<br /> <br /> pos++;<br /> return true;<br /> }<br /> <br /> ("<a target='tab' href='http://www.sysnet.pe.kr/3/0/3588'>재현</a>"님이 오류 보고 해주신 사항입니다.) </td> </tr> <tr> <td>4.5.1.5 구조체 - ref 예약어<br /> (239 페이지, 상단 예제 영역의 마지막 코드)</td> <td> Vector vt2 = new Vector() </td> <td> Vector vt2 = new <span style='color: blue; font-weight: bold'>Vector();</span> </td> </tr> <tr> <td>4.5.1.6 열거형<br /> (246 페이지, 상단과 하단 예제 코드)</td> <td> switch (operator) </td> <td> switch (<span style='color: blue; font-weight: bold'>opType</span>) <br /> <br /> ("<a target='tab' href='http://www.sysnet.pe.kr/3/0/3588'>재현</a>"님이 오류 보고 해주신 사항입니다.) </td> </tr> <tr> <td>5.3.2 예외 처리기<br /> (334 페이지, 하단의 마지막 예제 코드)</td> <td> FileHandle file = null; </td> <td> <span style='color: blue; font-weight: bold'>FileStream</span> file = null; </td> </tr> <tr> <td>6.2.3 System.Text.Encoding<br /> (389 페이지, 소스 코드 마지막 줄)</td> <td> string data = Encoding.UTF8.GetString(buf); </td> <td> string data = Encoding.UTF8.GetString(<span style='color: blue; font-weight: bold'>received</span>); <br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/4829'>윤현수</a>님이 오류 보고 해주신 사항입니다.) </td> </tr> <tr> <td>6.3.7 System.Runtime.Serialization.Json.DataContractJsonSerializer<br /> (406 페이지, 첫 번째 예제 코드 영역의 출력 결과)</td> <td> Console.WriteLine(clone); // 출력 결과: 27 Ted </td> <td> Console.WriteLine(clone); // 출력 결과: <span style='color: blue; font-weight: bold'>36 Anderson</span> </td> </tr> <tr> <td>6.6.6 비동기 호출<br /> (455, 456, 458, 664, 666 페이지의 예제 코드)</td> <td> using (FileStream fs = new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open)) </td> <td> using (FileStream fs = new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open<span style='color: blue; font-weight: bold'>, FileAccess.Read, FileShare.ReadWrite</span>))<br /> <br /> <br /> (일부 윈도우 운영체제에서 FileShare.ReadWrite 설정을 하지 않으면 관리자 권한이 없는 경우 예외가 발생. 그 외의 경우에는 정상적으로 실행.) </td> </tr> <tr> <td>6.8.2.1 System.Data.SqlClient.SqlConnection<br /> (520, 521, 526, 527 페이지의 예제 코드)</td> <td> using (SqlConnection sqlCon = new SqlConnection(connectionString))<br /> {<br /> sqlCon.ConnectionString = connectionString;<br /> sqlCon.Open();<br /> // DB에 연결된 동안 …… [DB 쿼리 실행] ……<br /> } </td> <td> using (SqlConnection sqlCon = new <span style='color: blue; font-weight: bold'>SqlConnection()</span>)<br /> {<br /> sqlCon.ConnectionString = connectionString;<br /> sqlCon.Open();<br /> // DB에 연결된 동안 …… [DB 쿼리 실행] ……<br /> }<br /> <br /> (만약, 생성자에서 연결 문자열을 넘겼다면 이후 ConnectionString 속성에는 대입할 필요가 없음.) </td> </tr> <tr> <td>6.9 리플렉션<br /> (553 페이지, 1번째 줄)</td> <td> '1.2 닷넷 프레임워크' 절에서 배운 내용을 </td> <td> '1.1.6 어셈블리, 모듈, 매니페스트' 절에서 배운 내용을<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/2/0/2923'>덧글 참조</a>) </td> </tr> </table> <br /> <br /> * 2부 정오표 *<br /> <table class="commentlist" style='width: 100%' border="2" > <tr> <td>7.1 제네릭<br /> (578 페이지 상단 예제 코드)</td> <td> Console.WriteLine(stack.Pop()); // 언박싱 발생<br /> Console.WriteLine(stack.Pop()); // 언박싱 발생<br /> Console.WriteLine(stack.Pop()); // 언박싱 발생<br /> </td> <td> int value = (int)stack.Pop(); // 언박싱 발생<br /> value = (int)stack.Pop(); // 언박싱 발생<br /> value = (int)stack.Pop(); // 언박싱 발생<br /> <br /> <br /> ("<a target='tab' href='http://www.sysnet.pe.kr/3/0/4704'>최훈</a>"님이 오류 보고 해주신 사항입니다.) </td> </tr> <tr> <td>8.3 객체 초기화<br /> (610 페이지 첫 번째 예제 코드)</td> <td> Person p2 = new Person(10) { name = "Anders" }; // 생성자 + 객체 초기화 </td> <td> Person p2 = new Person(10) { <span style='color: blue; font-weight: bold'>_name</span> = "Anders" }; // 생성자 + 객체 초기화 </td> </tr> <tr> <td>8.9 LINQ<br /> (631 페이지 예제 코드)</td> <td> class Person<br /> {<br /> public string Name { get; set; }<br /> public int Age { get; set; }<br /> <br /> public override string ToString()<br /> {<br /> return string.Format("{0}: {1}", Name, Age);<br /> }<br /> } </td> <td> class Person<br /> {<br /> public string Name { get; set; }<br /> public int Age { get; set; }<br /> <span style='color: blue; font-weight: bold'>public string Address { get; set; }</span><br /> <br /> public override string ToString()<br /> {<br /> return string.Format(<span style='color: blue; font-weight: bold'>"{0}: {1} in {2}", Name, Age, Address</span>);<br /> }<br /> } </td> </tr> <tr> <td>8.9 LINQ<br /> (631 페이지 예제 코드)</td> <td> new Person { Name = "Tom", Age = 63 },<br /> new Person { Name = "Winnie", Age = 40 },<br /> new Person { Name = "Anders", Age = 47 },<br /> new Person { Name = "Hans", Age = 25 },<br /> new Person { Name = "Eureka", Age = 32 },<br /> new Person { Name = "Hawk", Age = 15 }, </td> <td> new Person { Name = "Tom", Age = 63<span style='color: blue; font-weight: bold'>, Address = "Korea"</span> },<br /> new Person { Name = "Winnie", Age = 40<span style='color: blue; font-weight: bold'>, Address = "Tibet"</span> },<br /> new Person { Name = "Anders", Age = 47<span style='color: blue; font-weight: bold'>, Address = "Sudan"</span> },<br /> new Person { Name = "Hans", Age = 25<span style='color: blue; font-weight: bold'>, Address = "Tibet"</span> },<br /> new Person { Name = "Eureka", Age = 32<span style='color: blue; font-weight: bold'>, Address = "Sudan"</span> },<br /> new Person { Name = "Hawk", Age = 15<span style='color: blue; font-weight: bold'>, Address = "Korea"</span> }, </td> </tr> <tr> <td>9.2.3 동적 언어와의 타입 연동<br /> (657 페이지, 하단에서 3번째 줄)</td> <td> "라이브러리 패키지 관리자(Library Package Manager)" </td> <td> "NuGet 패키지 관리자(NuGet Package Manager)" <br /> <br /> (덧글의 서상호님이 오류 보고 해주신 사항입니다.) </td> </tr> <tr> <td>11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의<br /> (683 페이지, 절의 제목에서 첫 번째 줄)</td> <td> 메서드가 단일 <span style='color: blue; font-weight: bold'>문장</span>으로 이뤄진 경우 </td> <td> 메서드가 단일 <span style='color: blue; font-weight: bold'>식(expression)</span>으로 이뤄진 경우 </td> </tr> <tr> <td>11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의<br /> (684 페이지, 첫 번째 줄)</td> <td> 메서드 내의 코드는 모두 단일 <span style='color: blue; font-weight: bold'>문(statement)</span>으로만 </td> <td> 메서드 내의 코드는 모두 단일 <span style='color: blue; font-weight: bold'>식(expression)</span>으로만 </td> </tr> <tr> <td>11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의<br /> (685 페이지, 예제 코드의 9 번째 줄)</td> <td> // 복잡해도 결국 단일 <span style='color: blue; font-weight: bold'>문</span>이기만 하면 </td> <td> // 복잡해도 결국 단일 <span style='color: blue; font-weight: bold'>식</span>이기만 하면 </td> </tr> <tr> <td>10.2 비동기 호출<br /> (665 페이지 예제 10.2)</td> <td> AwaitRead() </td> <td> AwaitRead<span style='color: blue; font-weight: bold'>();</span> </td> </tr> </table> </p><br /> </div>
첨부파일
스팸 방지용 인증 번호
9553
(왼쪽의 숫자를 입력해야 합니다.)