성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
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# 7.1 프로그래밍: 기본 문법부터 실전 예제까지</h1> <p> 기존에 출판되었던,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 시작하세요! C# 프로그래밍 기본 문법부터 실전 예제까지 ; <a target='tab' href='http://www.yes24.com/24/goods/11257753?scode=032'>http://www.yes24.com/24/goods/11257753?scode=032</a> 시작하세요! C# 6.0 프로그래밍 기본 문법부터 실전 예제까지 ; <a target='tab' href='http://www.yes24.com/24/goods/19427525?scode=032'>http://www.yes24.com/24/goods/19427525?scode=032</a> </pre> <br /> "시작하세요! C# 프로그래밍"의 7.0/7.1 개정판이 나왔습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 위키북스 - 시작하세요! C# 7.1 프로그래밍: 기본 문법부터 실전 예제까지 ; <a target='tab' href='http://wikibook.co.kr/beginning-csharp-71/'>http://wikibook.co.kr/beginning-csharp-71/</a> Yes24 - 시작하세요! C# 7.1 프로그래밍 기본 문법부터 실전 예제까지 ; <a target='tab' href='http://www.yes24.com/24/goods/48156128?scode=032&OzSrank=1'>http://www.yes24.com/24/goods/48156128?scode=032&OzSrank=1</a> </pre> <br /> 이 책에서 바뀐 점은 다음과 같습니다.<br /> <br /> <ul> <li>C# 7.0/7.1 문법 설명 추가</li> <li>닷넷 코어와 닷넷 스탠다드의 개요 설명 추가</li> <li>비주얼 스튜디오 2017 / SQL Server 2016 기준으로 화면 업데이트</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/cs7_free.pdf'>https://www.sysnet.pe.kr/book/cs7_free.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/cs7_sample_code.zip'>https://www.sysnet.pe.kr/book/cs7_sample_code.zip</a> * 소스코드를 비주얼 스튜디오 2017 (<a target='tab' href='http://www.sysnet.pe.kr/2/0/11272'>15.3.1버전</a>)에서 열은 후, 테스트하고 싶은 프로젝트를 "시작 프로젝트로 설정" 메뉴로 지정하면 됩니다. ("시작 프로젝트로 설정" 메뉴에 대해서는 책의 295페이지에 있는 "Note" 내용에서 좀 더 자세하게 알 수 있습니다.) * 처음 CSharp7.sln 솔루션을 로드 후 빌드하면 오류가 발생할 수 있습니다. 일부 프로젝트의 경우 NuGet 패키지 구성 시간이 걸려 그런 것이므로 1~2분 정도 후에 다시 빌드하면 됩니다. 6장에서 만드는 SQL 데이터베이스 파일 ; <a target='tab' href='https://www.sysnet.pe.kr/book/cs7_book_db_file.zip'>https://www.sysnet.pe.kr/book/cs7_book_db_file.zip</a> </pre> <br /> 압축을 풀면 나오는 "CSharp7.sln" 파일을 비주얼 스튜디오 2017 (<a target='tab' href='http://www.sysnet.pe.kr/2/0/11272'>15.3.1버전</a>)에서 열면 다음과 같이 솔루션 탐색기(Solution Explorer)에서 장(Chapter) 별로 나누어져 있어 찾기 편하도록 구성했습니다.<br /> <br /> <img alt='sample_code7_sln.png' src='/SysWebRes/bbs/sample_code7_sln.png' /><br /> <br /> 소스 코드 프로젝트 중에서 11장까지는 책에서 "예제" 제목이 달린 소스 코드마다 완전히 실행 가능한 C# 프로젝트를 만들었습니다. 또한, "예제" 제목이 달리지 않은 소스코드도 모두 "부가코드-[번호].txt"라는 파일에 담아 두었습니다. 각각의 txt 파일도 복사해서 붙여넣으면 컴파일이 되는 하나의 독립적인 예제입니다.<br /> <br /> 하지만 12장 ~ 13장은 "예제" 제목이 달린 프로젝트가 해당 절에 포함된 소스 코드와 일치합니다.<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/cs7_img.zip'>https://www.sysnet.pe.kr/book/cs7_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/cs7_diagram.pptx'>https://www.sysnet.pe.kr/book/cs7_diagram.pptx</a> (혹시 이 파일에 실린 다이어그램을 좀 더 멋지게 그리셨다면 제 책에 실을 수 있도록 공유 부탁드립니다. ^^) </pre> <br /> 마지막으로, 공개된 PDF의 14~15장 내용에 대해서는 책의 서문에 쓴 내용을 공지합니다.<br /> <br /> <div style='BACKGROUND-COLOR: #ccffcc; padding: 10px 10px 5px 10px; MARGIN: 0px 10px 10px 10px; FONT-FAMILY: Malgun Gothic, Consolas, Verdana; COLOR: #005555'> 이 중에서 3부의 내용은 좀 더 부가 설명이 필요하다. 필자가 쓴 책은 C# 5.0을 대상으로 처음 쓰여졌으며 3부의 내용은 원래 그 책에 포함돼 있던 내용이다. 하지만 C# 6.0을 포함한 개정판이 나오면서 책의 분량이 늘어나는 것을 고려해 3부의 내용을 제외시켜 무료 PDF 문서로 공개했고 이번 C# 7.0/7.1 책에서도 포함하지 않았다. <span style='color: blue; font-weight: bold'>종이책으로 꾸준히 출판한 1부, 2부와는 달리 3부의 내용은 C# 5.0 책이 쓰여졌던 시점 이후로 업데이트되지 않았기 때문에 3부의 내용 중 일부는 개발 환경의 변화로 달라졌을 수 있음을 미리 말씀드린다.</span> </div><br /> <br /> 정리하면, 3부의 내용 중 모바일 부분은 거의 실습을 할 수 없을 것입니다. 그래도 다음의 사이트에 소스코드가 공개되어 있으니 참고하실 수 있습니다.<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 /> <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 /> * 1부 정오표 *<br /> <table class="commentlist" style='width: 100%' border="2" > <tr> <th width='200px'>위치</th> <th>변경 전</th> <th>변경 후</th> </tr> <tr> <td>4.1.4 소멸자 (110 페이지)</td> <td> 4.1.4 절 전체에 쓰인 소멸자<br /> 5.4.2.6 절 전체에 쓰인 소멸자<br /> 11.2 절 700 페이지<br /> 12.5 절 744, 745 페이지<br /> </td> <td> "소멸자"라는 단어를 "종료자"로 변경, 아울러 영문 표기도 "destructor"에서 "finalizer"로 변경<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5026'>농상 님의 건의 사항</a>입니다.) </td> </tr> <tr> <td>4.2.1 접근 제한자 (127 페이지)</td> <td> internal protected : protected와 internal의 조합으로, 동일 어셈블리 내에서 정의된 파생 클래스까지만 접근을 허용한다(protected internal로도 지정 가능). </td> <td> internal protected : 동일 어셈블리 내에서 정의된 클래스이거나 다른 어셈블리라면 파생 클래스인 경우에 한해 접근을 허용한다(protected internal로도 지정 가능). 즉, internal 또는 protected 조건이다. </td> </tr> <tr> <td>5.1.3.1 연산 범위 확인: checked, unchecked (277 페이지)</td> <td> (내용 없음) </td> <td> (277 페이지 두 번째 줄 다음에 박스 형식의 노트(Note)를 추가)<br /> <br /> 엄밀하게 정의를 하면, 정수에서의 상한 및 하한을 넘어서는 모든 결과를 오버플로라고 하며 언더플로는 특별히 부동 소수점 연산에서 0에 가깝지만 정밀도의 한계로 표현할 수 없을 때 아예 0으로 만들어 버리는 것을 의미한다.<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5019'>농상 님이 오류 보고해 주신 사항입니다.</a>) </td> </tr> <tr> <td>5.4.2.6 소멸자 (365 페이지)</td> <td> "기본적인 소멸자 정의는...."으로 시작해 366 페이지의 내용까지. </td> <td> 종료자(소멸자)에 대한 처리에 있어 기본적인 설명이 변경되었습니다. 자세한 사항은 "<a target='tab' href='http://www.sysnet.pe.kr/2/0/11510'>windbg로 확인하는 Finalizer를 가진 객체의 GC 과정</a>" 글에 "이번 테스트를 통해 제가 그동안 잘못 알고 있던 것을 바로잡을 수 있게 되었습니다."라고 시작하는 절로 정리했으니 참고하세요. </td> </tr> <tr> <td>06 BCL (369 페이지, 마지막에서 둘 째줄)</td> <td> 자주 사용되기 때문에 마이크소프트에서는 </td> <td> 자주 사용되기 때문에 <span style='color: blue; font-weight: bold'>마이크로소프트</span>에서는 <br /><br /> </td> </tr> <tr> <td>6.1.3 System.Diagnostics.Stopwatch (375 페이지)</td> <td> (Stopwatch 예제 코드) </td> <td> Stopwatch st = new Stopwatch();<br /> <br /> st.Start();<br /> Sum();<br /> st.Stop();<br /> <br /> <span style='color: blue; font-weight: bold'>// st.ElapsedTicks 속성은 구간 사이에 흐른 타이머의 틱(tick) 수<br /> Console.WriteLine("Total Ticks: " + st.ElapsedTicks);<br /> <br /> // st.ElapsedMilliseconds 속성은 구간 사이에 흐른 시간을 밀리초로 반환<br /> Console.WriteLine("Millisecond: " + st.ElapsedMilliseconds);<br /> <br /> // 밀리초로 흐른 시간을 초로 환산<br /> Console.WriteLine("Second: " + st.ElapsedMilliseconds / 1000);<br /> <br /> // Stop.Frequency 속성이 초당 흐른 틱수를 반환하므로,<br /> // ElapsedTicks에 대해 나눠주면 초 단위의 시간을 잴 수 있음.<br /> Console.WriteLine("Second: " + st.ElapsedTicks / Stopwatch.Frequency);<br /></span><br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5017'>나나 님이 오류 보고해 주신 사항입니다.</a>) </td> </tr> <tr> <td>6.2.1 System.String (383 페이지)</td> <td> "표 6.3 형식 문자열 종류"의 날짜형에서 "유형" 컬럼에 "D", "D", "T", "T", "F", "F", "G", "G", "M", "Y" </td> <td> "표 6.3 형식 문자열 종류"의 날짜형에서 "유형" 컬럼에 "d", "D", "t", "T", "f", "F", "g", "G", "M", "Y" <br /><br /> (bluel004@hanmail.net 님이 오류 보고해 주신 사항입니다.) </td> </tr> </table> <br /> <br /> * 2부 정오표 *<br /> <table class="commentlist" style='width: 100%' border="2" > <tr> <th width='200px'>위치</th> <th>변경 전</th> <th>변경 후</th> </tr> <tr> <td>10.2 비동기 호출 (677 페이지 예제 10.2)</td> <td> new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))<br /> </td> <td> new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5119'>http://www.sysnet.pe.kr/3/0/5119</a>) </td> </tr> <tr> <td>11.4 null 조건 연산자 (705 페이지 마지막 예제)</td> <td> string [] lines = GetLines();<br /> string firstElement = lines?[0]; // lines != null이면 lines[0] 요소를 반환<br /> </td> <td> (예제 개선)<br /> <br /> {<br /> string[] lines = { "txt", "doc" };<br /> string firstElement = lines?[0]; // lines != null이므로 lines[0] 요소를 반환<br /> }<br /> <br /> {<br /> string[] lines = null;<br /> string firstElement = lines?[0]; // lines == null이므로 null 반환<br /> }<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5020'>농상 님의 건의 사항</a>입니다.) </td> </tr> <tr> <td>12.1 더욱 편리해진 out 매개변수 사용 (730 페이지)</td> <td> {<br /> int.TryParse("5", out int _ ); // 변수명 대신 밑줄(underline: _)로 생략<br /> int.TryParse("5", out var _ );<br /> }<br /> </td> <td> 다음과 같이 코드 추가합니다.<br /><br /> <br /> {<br /> int.TryParse("5", out int _ ); // 변수명 대신 밑줄(underline: _)로 생략<br /> int.TryParse("5", out var _ ); <span style='color: blue; font-weight: bold'>// 타입 대신 var<br /> int.TryParse("5", out _ ); // 타입까지도 생략 가능</span><br /><br /> }<br /> </td> </tr> <tr> <td>12.3 튜플 (735 페이지)</td> <td> 튜플(Tuple)이란 유한 개의 원소로 이뤄진 <span style='color: blue; font-weight: bold'>졍렬된</span> </td> <td> 튜플(Tuple)이란 유한 개의 원소로 이뤄진 <span style='color: blue; font-weight: bold'>정렬된</span><br /> <br /> (bluel004@hanmail.net 님이 오류 보고해 주신 사항입니다.) </td> </tr> <tr> <td>12.7 사용자 정의 Task 타입을 async 메서드의 반환 타입으로 사용가능 (748 페이지)</td> <td> "C# 7.0부터..."로 시작하는 내용을 부분적으로 교체 </td> <td> 이 기능은 C# 5.0 컴파일러부터 이미 제공되던 기능으로 자세한 사항은 "<a target='tab' href='http://www.sysnet.pe.kr/2/0/11484'>C# - async를 Task 타입이 아닌 사용자 정의 타입에 적용하는 방법</a>" 글에 정리했으니 참고하세요. </td> </tr> <tr> <td>12.10.2 switch/case 문의 패턴 매칭 (757 페이지)</td> <td> case DateTime dt: // 타입 패턴 (값 형식) - 필요 없다면 dt 변수 생략 가능<br /> break;<br /> <br /> case ArrayList arr: // 타입 패턴 (참조 형식) - 필요 없다면 arr 변수 생략 가능<br /> break;<br /> </td> <td> case DateTime dt: // 타입 패턴 (값 형식) - <span style='color: blue; font-weight: bold'>필요 없다면 dt 변수명을 밑줄(_)로 생략 가능</span><br /> break;<br /> <br /> case ArrayList arr: // 타입 패턴 (참조 형식) - <span style='color: blue; font-weight: bold'>필요 없다면 arr 변수명을 밑줄(_)로 생략 가능</span><br /> break;<br /> <br /> (<a target='tab' href='http://www.sysnet.pe.kr/3/0/5023'>농상 님이 오류 보고해 주신 사항</a>입니다.) </td> </tr> </table> </p><br /> </div>
첨부파일
스팸 방지용 인증 번호
1992
(왼쪽의 숫자를 입력해야 합니다.)