Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (kevin13@chol.net)
홈페이지
첨부 파일
 

도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지


기존에 출판되었던 "시작하세요! C# 프로그래밍: 기본 문법부터 실전 예제까지"의 개정판이 나왔습니다.

시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 
; http://www.yes24.com/24/goods/19427525

이 책에서 바뀐 점은 크게 다음의 2가지입니다.

  • C# 6.0 문법 설명 추가
  • 기존 책의 3부에 해당하는 내용은 책에서 제거하고 PDF로 공개

당연히 가격은 내리고 책의 두께가 가벼워졌겠지요. ^^ 그 외에 자잘하게 다음의 변경 사항이 있습니다.

  • 목차를 4단계까지 구성해서 책 내용을 좀더 쉽게 찾을 수 있습니다.
  • 인덱스 단어를 기존 책보다 2.5배 분량으로 늘렸습니다.
  • 책의 소스코드가 개별 다운로드가 아닌 단일 .sln 파일로 구성되었습니다.

3부의 내용을 담은 PDF 파일은 다음의 경로에서 다운로드 받을 수 있습니다.

공개된 3부 - PDF
; http://res.sysnet.pe.kr/book/cs6_part3.pdf

책에도 포함되고 공개도 된 부록 - PDF
; http://res.sysnet.pe.kr/book/cs6_appendix.pdf

책에서 혹시 이해가 안되거나 궁금하신 부분이 있으면 다음의 게시판을 활용해 주시면 답변을 드리도록 하겠습니다. (물론, 오타나 문장이 이상한 부분이 있는 것도 게시판을 통해 알려주시면 반영하겠습니다.)

질문 답변 게시판
; http://www.sysnet.pe.kr/3/0

책에 있는 예제는 다음의 경로에서 다운로드 받을 수 있고,

소스코드 다운로드(단일 ZIP 파일)
; http://res.sysnet.pe.kr/book/sample_code.zip

* 소스코드를 비주얼 스튜디오에서 열은 후, 테스트하고 싶은 프로젝트를 "시작 프로젝트로 설정" 메뉴로 지정하면 됩니다. 
(참고로, "시작 프로젝트로 설정" 메뉴에 대해서는 책의 301페이지에 있는 "Note" 내용에서 좀더 자세하게 알 수 있습니다.)

6장에서 만드는 SQL 데이터베이스 파일
; http://res.sysnet.pe.kr/book/book2_db_file.zip

압축을 풀면 나오는 "CSharp6.sln" 파일을 비주얼 스튜디오에서 열면 다음과 같이 솔루션 탐색기(Solution Explorer)에서 장(Chapter) 별로 나누어져 있어 찾기 편하도록 구성했습니다.

sample_code_sln.png

책에서 "예제" 제목이 달린 소스 코드마다 완전히 실행 가능한 C# 프로젝트를 만들었습니다. 또한, "예제" 제목이 달리지 않은 소스코드도 모두 "부가코드-[번호].txt"라는 파일에 담아 두었습니다. 각각의 txt 파일도 복사해서 붙여넣으면 컴파일이 되는 하나의 독립적인 예제입니다.

이번에도 책에 포함된 모든 그림 파일을 다음의 경로에 공개해 두었습니다.

책에 포함된 그림
; http://res.sysnet.pe.kr/book/cs6_img.zip

캡쳐된 그림 이외에 다이어그램을 그리기 위해 사용한 PPT 파일도 아래에 공개했습니다. (일부 다이어그램은 출판사 측에서 인쇄를 위해 재편집을 했기 때문에 원본과 약간 다를 수 있습니다.)

다이어그램 원본 PPT 파일
; http://res.sysnet.pe.kr/book/diagram2.pptx

마지막으로 공개된 PDF의 13장에서 다루고 있는 파워포인트 제어 실습 예제는 현재 윈도우 폰의 경우 직접 다운로드 받을 수 있지만, 구글 앱 스토어에 등록된 것은 내려간 상태입니다.

윈도우 폰 - OfficeController
; http://www.windowsphone.com/s?appid=db531773-4b34-42a2-a61a-fcfb7353f2e7


대신 다음의 사이트에 소스코드가 공개되어 있으니 참고하실 수 있습니다.

OfficePresenter 소스코드
; https://github.com/stjeong/OfficePresenter
(다운로드 방법: 위 링크의 우측 하단에 "Download ZIP" 버튼을 누르면 됩니다.)

참고로, Android 버전의 경우 Xamarin 제품을 이용해서 C# 소스코드로 만들어졌습니다.





[정오표]

정말 기묘한 일입니다. ^^; 출판사 측과 최종 원고를 확정짓는 시점에 언제나 저는 확신합니다. '이젠 오타가 없겠지!'라며!!!

출판 작업이 시작되어 더 이상 바꿀 수 없는 이 시점에, 다시 한번 책의 원고를 들여다 보는데 오타가 보입니다. 휴~~~, 다음 번엔 정말로 단 하나의 오타도 없을 거라 다짐하면서... 여러분의 도움도 아울러 부탁드리겠습니다. (오타가 없는 그날까지!)

정오표는 오류의 경중에 따라 나누는 것이 필요할 것 같아서 2개로 분리했습니다. 중요한 것은 아래에 나열했고, 중요하지 않은 정오표는 다음의 글로 분리했습니다.

도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2)
 ; http://www.sysnet.pe.kr/2/0/10861

또한 아래의 정오표는 초판 발행본에 한해서 적용된 것입니다. 2판 인쇄물을 구매하신 분들은 다음의 정오표를 참고하시면 됩니다.

도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2쇄 정오표)
; http://www.sysnet.pe.kr/2/0/11019

* 1부 정오표 *
위치 변경 전 변경 후
3.1.1 정수형 기본 타입
    (56 페이지, 하단으로부터 2번째 줄)
216 = 65,535 216 = 65,536
3.5.1.3 switch 문
    (90 페이지, 중간 예제 코드)
char ch = 'F': char ch = 'F';
4.3.1 형변환
    (152 페이지, 하단으로부터 1번째 줄)
'정수(자연수와 그것의 음수)' '정수(자연수 및 그것의 음수와 0)'
4.3.1 형변환
    (196 페이지, 중앙 예제 코드 아래)
이렇게 메서드를 가리킬 수 타입을 이렇게 메서드를 가리킬 수 있는 타입을
4.5.1.3 델리게이트 - 콜백 메서드
    (203 페이지, 그림 4.12내의 코드 영역)
public INT GetResult() public int GetResult()
4.5.1.3 델리게이트 - 콜백 메서드
    (203 페이지, 그림 4.12내의 코드 영역)
Target target = new Target()
target.D(this)
Target target = new Target();
target.Do(this);
4.5.1.4 인터페이스 - IEnumerable 인터페이스
    (223 페이지 예제 코드)
public USBEnumerator(USB[] usb)
{
    list = usb;
}

public bool MoveNext()
{
    if (pos > length)
    {
        return false;
    }

    pos++;
    return true;
}
public USBEnumerator(USB[] usb)
{
    list = usb;
    length = usb.Length;
}

public bool MoveNext()
{
    if (pos >= length - 1)
    {
        return false;
    }

    pos++;
    return true;
}

("재현"님이 오류 보고 해주신 사항입니다.)
4.5.1.5 구조체 - ref 예약어
    (239 페이지, 상단 예제 영역의 마지막 코드)
Vector vt2 = new Vector() Vector vt2 = new Vector();
4.5.1.6 열거형
    (246 페이지, 상단과 하단 예제 코드)
switch (operator) switch (opType)

("재현"님이 오류 보고 해주신 사항입니다.)
5.3.2 예외 처리기
    (334 페이지, 하단의 마지막 예제 코드)
FileHandle file = null; FileStream file = null;
6.2.3 System.Text.Encoding
    (389 페이지, 소스 코드 마지막 줄)
string data = Encoding.UTF8.GetString(buf); string data = Encoding.UTF8.GetString(received);

(윤현수님이 오류 보고 해주신 사항입니다.)
6.3.7 System.Runtime.Serialization.Json.DataContractJsonSerializer
    (406 페이지, 첫번째 예제 코드 영역의 출력 결과)
Console.WriteLine(clone); // 출력 결과: 27 Ted Console.WriteLine(clone); // 출력 결과: 36 Anderson
6.6.6 비동기 호출
    (455, 456, 458, 664, 666 페이지의 예제 코드)
using (FileStream fs = new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open)) using (FileStream fs = new FileStream(@"C:\windows\system32\drivers\etc\HOSTS", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))


(일부 윈도우 운영체제에서 FileShare.ReadWrite 설정을 하지 않으면 관리자 권한이 없는 경우 예외가 발생. 그 외의 경우에는 정상적으로 실행.)
6.8.2.1 System.Data.SqlClient.SqlConnection
    (520, 521, 526, 527 페이지의 예제 코드)
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
    sqlCon.ConnectionString = connectionString;
    sqlCon.Open();
    // DB에 연결된 동안 …… [DB 쿼리 실행] ……
}
using (SqlConnection sqlCon = new SqlConnection())
{
    sqlCon.ConnectionString = connectionString;
    sqlCon.Open();
    // DB에 연결된 동안 …… [DB 쿼리 실행] ……
}

(만약, 생성자에서 연결 문자열을 넘겼다면 이후 ConnectionString 속성에는 대입할 필요가 없음.)
6.9 리플렉션
    (553 페이지, 1번째 줄)
'1.2 닷넷 프레임워크' 절에서 배운 내용을 '1.1.6 어셈블리, 모듈, 매니페스트' 절에서 배운 내용을

(덧글 참조)


* 2부 정오표 *
7.1 제네릭
    (578 페이지 상단 예제 코드)
Console.WriteLine(stack.Pop()); // 언박싱 발생
Console.WriteLine(stack.Pop()); // 언박싱 발생
Console.WriteLine(stack.Pop()); // 언박싱 발생
int value = (int)stack.Pop(); // 언박싱 발생
value = (int)stack.Pop();     // 언박싱 발생
value = (int)stack.Pop();     // 언박싱 발생


("최훈"님이 오류 보고 해주신 사항입니다.)
8.3 객체 초기화
    (610 페이지 첫번째 예제 코드)
Person p2 = new Person(10) { name = "Anders" }; // 생성자 + 객체 초기화 Person p2 = new Person(10) { _name = "Anders" }; // 생성자 + 객체 초기화
8.9 LINQ
    (631 페이지 예제 코드)
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override string ToString()
    {
        return string.Format("{0}: {1}", Name, Age);
    }
}
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }

    public override string ToString()
    {
        return string.Format("{0}: {1} in {2}", Name, Age, Address);
    }
}
8.9 LINQ
    (631 페이지 예제 코드)
new Person { Name = "Tom", Age = 63 },
new Person { Name = "Winnie", Age = 40 },
new Person { Name = "Anders", Age = 47 },
new Person { Name = "Hans", Age = 25 },
new Person { Name = "Eureka", Age = 32 },
new Person { Name = "Hawk", Age = 15 },
new Person { Name = "Tom", Age = 63, Address = "Korea" },
new Person { Name = "Winnie", Age = 40, Address = "Tibet" },
new Person { Name = "Anders", Age = 47, Address = "Sudan" },
new Person { Name = "Hans", Age = 25, Address = "Tibet" },
new Person { Name = "Eureka", Age = 32, Address = "Sudan" },
new Person { Name = "Hawk", Age = 15, Address = "Korea" },
9.2.3 동적 언어와의 타입 연동
    (657 페이지, 하단에서 3번째 줄)
"라이브러리 패키지 관리자(Library Package Manager)" "NuGet 패키지 관리자(NuGet Package Manager)"

(덧글의 서상호님이 오류 보고 해주신 사항입니다.)
11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의
    (683 페이지, 절의 제목에서 첫 번째 줄)
메서드가 단일 문장으로 이뤄진 경우 메서드가 단일 식(expression)으로 이뤄진 경우
11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의
    (684 페이지, 첫 번째 줄)
메서드 내의 코드는 모두 단일 문(statement)으로만 메서드 내의 코드는 모두 단일 식(expression)으로만
11.2 람다 식을 이용한 메서드, 속성 및 인덱서 정의
    (685 페이지, 예제 코드의 9 번째 줄)
// 복잡해도 결국 단일 이기만 하면 // 복잡해도 결국 단일 이기만 하면
10.2 비동기 호출
    (665 페이지 예제 10.2)
AwaitRead() AwaitRead();







[최초 등록일: ]
[최종 수정일: 8/18/2017 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:kevin13@chol.com

비밀번호

댓글 쓴 사람
 



2015-10-04 11시46분
[혹시] Pg.56 2**16 = 65535 ? 65536 ?
Pg.196 이렇게 메서드를 가리킬 수 "있는" 타입을
[손님]
2015-10-05 12시31분
"혹시"님 의견이 맞습니다. '경우의 수'니까 65536으로 써야 합니다. 그리고 "있는" 단어도. ^^;
정성태
2015-10-08 02시26분
[누락] Pg.161 (출력 결과 첫 번째 줄)
Computer --> 네임스페이스.Computer

FQDN 스타일로 출력될 듯..
[손님]
2015-10-08 02시50분
[에라타] Pg.553
1.2 닷넷 프레임워크 --> 1.1.6 어셈블리, 모듈, 매니페스트
[손님]
2015-10-08 04시28분
[에라타] Pg.552
콘솔 응용 프로그램은 1개의 공유 AppDomain과 1개의 AppDomain으로 시작하지만..

1.
"공유" AppDomain이라는 개념/용어는 없음.
혹시 있다면, "Domain-neutral 어셈블리" 정도나 있을 것이며,
혹시 있다면, "SharedDomain" 정도나 있을 것으로 보임.
혹시 있다면, 보편적인 인정을 받지 봇하는 일각의 주장일 수도 있을 듯..

2.
AppDomain의 시작 설명은
"그냥" AppDomain이 아닌..
"Default" AppDomain이라고 해야 옳음.

[손님]
2015-10-09 12시05분
Pg.161의 경우 예제 코드의 Computer 타입이 Namespace 아래 없기 때문에 책 내용이 맞습니다. 모든 타입이 네임스페이스를 갖는 것은 아닙니다.
정성태
2015-10-09 12시09분
Pg.553의 것은 오류가 맞습니다.
 
정성태
2015-10-09 01시18분
[에라타] 객체지향이라는 개념을 잡는 데 상당히 애를 먹었는 데,
설명하는 "자"들의 개념이 엉터리라서 그랬습니다.

객체지향은 분리와 통합의 개념인데,
이번과 같이 질문/대답을 객체지향으로 풀어본다면..

질문과 답변이라는 행위가 있겠고
자세와 역량이라는 속성이 있겠죠..

자신의 책이라는 기본 자세에 문제가 있고,
일일이 꼼꼼하게 검토 안하는 역량도 문제가 있네요..

모든 예제는 기본 예제 2.1을 기반으로 합니다. Pg.58
상기 본문의 소스 코드 "sample_code\Chapter4\예제4.12\부가코드-3.txt"를 보아도..

네임스페이스는 적용이 되어야 합니다.

이후 에라타는 기록하지 않겠습니다.
시간 낭비임이 분명하군요..

[손님]
2015-10-09 01시18분
Pg.552의 것은 고민이 되는 군요. 사실, 공유 AppDomain은 오히려 기존에는 단순히 "도메인 중립 공간" 정도로만 알려져 있었습니다. 이것을 정식으로 AppDomain으로 '공공연하게' 승격시킨 것은 "Process Explorer" 도구의 속성 창에 있는데요. 공유 AppDomain이란 그 속성 창에 보여지는 것처럼 "Shared" 속성을 가진 AppDomain을 의미합니다. 용어를 너무 일반화시킨 것 같긴 한데, 그래도 이 책에서 그 이상 자세하게 쓰는 것은 책의 성격상 맞지 않으므로 그 정도로만 간단하게 언급하는 것이 맞을 듯 합니다.

 두번째의 "Default"를 붙이는 것은 좋은 의견입니다.

정성태
2015-10-09 02시10분
그나저나... 문답하다 보니 정말 궁금한 점이 제가 생겼는데요.

"http://www.sysnet.pe.kr/3/0/3612" 글에서 @spowner님도 그런 느낌을 받았지만, 혹시 예전에 "http://www.sysnet.pe.kr/0/0/482", "http://www.sysnet.pe.kr/3/0/1298" 사건을 일으킨 분 아닌가요? "http://www.sysnet.pe.kr/3/0/3587" 글의 덧글을 보면 왠지 그 "김인혜"씨가 거의 맞다는 생각이 드는데요.

그래서 질문이 생깁니다.

그때 분위기로 보면, 제 책을 다신 구매하실 것 같지 않을 것 같았는데... 왜 굳이 다시 구매를 하셨는지 그 이유를 알 수 있을까요? 또 한가지 더 질문이 있는데요. 그렇게 자신의 글을 삭제해 달라고 나가면서 다시는 제 사이트에 글을 안 남기겠다고 했는데... 왜 굳이 다시 오셔서 글을 남기는 것인지 그 이유도 너무 궁금합니다. (다른 뜻은 없고, 정말 그 심리가 궁금해서 그런 것입니다.)

혹시, 그 분이라면 다시 글들을 지워드릴까요? 기꺼이 지워드릴 용의가 있습니다. 다음의 글들과 이 글의 덧글을 모두 삭제해드리겠습니다.

http://www.sysnet.pe.kr/3/0/3612
http://www.sysnet.pe.kr/3/0/3616
http://www.sysnet.pe.kr/3/0/3587

마지막으로, 어쨌든 제 입장에서는 저 대신 다른 분들이 시간을 내서 검토하고 덧글까지 달아준다는 것은 정말 고맙게 생각합니다. ^^ (단지 그것에서 질문의 어투는 제외합니다.)

(혹시, 그 분이 아니라면 이 덧글은 그냥 무시하셔도 됩니다.)

정성태
2015-10-19 10시40분
[CC] 안녕하세요. 문의 드릴 내용이 있어서 글 남깁니다.
책을 보다가 pg.220 System.Collection의 IComparer를 사용하여 형변환을 하는 것 보다 System.Collection.Generic의 IComparer<T>를 사용하는 명확한 예제가
좋지 않을까 하는데요, 혹시 명시적 형변환을 하는 다른 이유가 있으신가 해서 글 남깁니다.

P.S) 물론 원 내용으로도 충분히 의도 전달이 가능하다고 생각합니다. 오해 없으시길 바랍니다.
[손님]
2015-10-19 10시51분
@CC 님 의견 감사합니다. 그런데... 책을 쓰다보니... ^^ 닭과 달걀의 문제가 심심치 않게 발생하게 되는데, 바로 이런 경우에도 그렇습니다. 물론 예제로는 IComparer<T>가 더 좋은데, 아직 Generic을 설명하기 전이라서요. 그게 좀 그렇습니다. ^^
정성태
2015-10-19 11시02분
[CC] 역시 그런 뜻이 있으셨군요. 뒷쪽 페이지를 보니 제너릭에 대한 설명이 있더라구요. 그래서 아차 싶어 글을 지우러 왔는데 이미 댓글을 주셨네요.
차례라는 것이 있는데 제가 너무 앞서 나갔네요. 전체를 볼 수 있는 서적이라는 것을 깜빡 했습니다.
친절하게 답변 주셔서 대단히 감사합니다. ^^

P.S 개발은 꽤 오래 했지만 성태님 책으로 C#을 처음 배웁니다. 책 내용이 너무 좋네요~ ^^
[손님]
2016-08-10 01시22분
page 85 중간쯤에
"결괏값에 상관없이"
오타 같습니다.
서상호
2016-08-10 01시47분
서상호님, 사이시옷을 말씀하시는 건가요? C# 5.0 책을 내는 시기만 해도 '결과값'이 맞았는데요. C# 6.0 책을 내는 사이 맞춤법이 개정되었습니다. (심지어, 저도 모르고 있어서 6.0의 제 원본 원고는 '결과값'으로 했는데, 출판사 측에서 교정보면서 전부 바뀌었습니다.)

https://twitter.com/urimal365/status/359218968839467009
정성태
2016-08-10 04시17분
아. 맞춤법을 잘못알고 있었네요. 좋은정보 감사합니다.

그리고 page 657, 아래에서 두번째 둘.
"라이브러리 패키지 관리자" 표현이 있는데요. 제가 사용 중인 VS2015 Professional 에는 "NuGet Package Manager"로 나오네요.
서상호
2016-08-10 02시22분
서상호님, 말씀하신 내용이 맞습니다. Visual Studio 2013까지는 "라이브러리..."였는데 2015부터 바뀐 것을 제가 반영하지 못한 것입니다. 감사합니다. ^^ (정오표에 반영했습니다.)
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
11658정성태8/18/20185사물인터넷: 31. 커패시터와 RC 회로파일 다운로드3
11657정성태8/18/201810사물인터넷: 30. 릴레이(Relay) 제어파일 다운로드3
11656정성태8/18/201831사물인터넷: 29. 트랜지스터와 병렬로 연결한 LED파일 다운로드1
11655정성태8/18/201826사물인터넷: 28. 저항과 병렬로 연결한 LED파일 다운로드1
11654정성태8/18/201844사물인터넷: 27. 병렬 회로의 저항, 전압 및 전류파일 다운로드1
11653정성태8/18/201828사물인터넷: 26. 입력 전압에 따른 LED의 전압/저항 변화파일 다운로드1
11652정성태8/18/201834사물인터넷: 25. 컬렉터 9V, 베이스에 5V와 3.3V 전압으로 테스트하는 C1815 트랜지스터파일 다운로드1
11651정성태8/18/201846사물인터넷: 24. 9V 전압에서 테스트하는 C1815 트랜지스터파일 다운로드2
11650정성태8/18/201842사물인터넷: 23. 가변저항으로 분압파일 다운로드1
11649정성태8/14/201869사물인터넷: 22. 저항에 따른 전류 테스트파일 다운로드1
11648정성태8/14/201878사물인터넷: 21. 퓨즈를 이용한 회로 보호파일 다운로드3
11647정성태8/8/2018145오류 유형: 476. 음수의 음수는 여전히 음수가 되는 수(절대값이 음수인 수)
11646정성태8/8/201877오류 유형: 475. gacutil.exe 실행 시 "Failure initializing gacutil" 오류 발생
11645정성태8/8/201887오류 유형: 474. 닷넷 COM+ - Failed to load the runtime.
11644정성태8/8/2018171디버깅 기술: 119. windbg - 닷넷 개발자를 위한 MEX Debugging Extension 소개
11643정성태8/12/2018172사물인터넷: 20. 아두이노 레오나르도 R3 호환 보드의 3.3v 핀의 LED 전압/전류 테스트 [1]파일 다운로드1
11642정성태8/3/201899Graphics: 19. Unity - LightMode의 ForwardBase에 따른 _WorldSpaceLightPos0 값 변화
11641정성태8/3/2018135Graphics: 18. Unity로 실습하는 Shader (10) - 빌보드 구현파일 다운로드1
11640정성태8/3/2018117Graphics: 17. Unity - World matrix(unity_ObjectToWorld)로부터 Position, Rotation, Scale 값을 복원하는 방법파일 다운로드1
11639정성태8/2/2018135디버깅 기술: 118. windbg - 덤프 파일로부터 추출한 DLL을 참조하는 방법
11638정성태8/2/2018202오류 유형: 473. windbg - 덤프 파일로부터 추출한 DLL 참조 시 "Resolved file has a bad image, no metadata, or is otherwise inaccessible." 빌드 오류
11637정성태8/1/2018113Graphics: 16. Unity - World matrix(unity_ObjectToWorld)로부터 TRS(이동/회전/크기) 행렬로 복원하는 방법파일 다운로드1
11636정성태8/1/2018114Graphics: 15. 3D 공간에서 두 점이 이루는 각도 구하기파일 다운로드1
11635정성태8/1/2018101오류 유형: 472. C# 컴파일 오류 - Your project is not referencing the ".NETFramework,Version=v3.5" framework.
11634정성태8/1/2018140.NET Framework: 790. .NET Thread 상태가 Cooperative일 때 GC hang 현상 재현 방법파일 다운로드1
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...