2008-11-10 5 views
15

언어의 발전에 따라 C와 C++를 배웠습니다. 이제 C#을 배우고 싶습니다. 포인터 제거 및 가비지 수집과 같은 몇 가지 큰 차이점이 있음을 알고 있습니다. 그러나 나는이 둘의 차이점을 많이 모른다.C++ 이후 C++ 학습

C++ 프로그래머가 C#으로 이동할 때 알아야 할 주요 차이점은 무엇입니까? (예를 들어, STL 대신 사용할 수있는 것, 이들 사이의 구문 차이 또는 중요한 것으로 간주 될 수있는 다른 것)

답변

17

C# for C++ Developers은 시작하기에 좋은 장소입니다. 두 언어 간의 가장 중요한 비교를 나열하는 표입니다.

이러한 차이점을 살펴 본 후에는 이전에 C++로 작성한 자체 포함 프로젝트를 선택하고 C#으로 다시 작성할 수 있습니다. 첫 번째 단계에서는 동일한 디자인과 알고리즘을 사용하여 직접 번역 할 수 있습니다. C#에 익숙해지면 C#에서만 사용할 수있는 언어 기능은 물론 다양한 용도로 사용할 수있는 .NET Framework를 활용하는 방법을 알게 될 것입니다.

+0

.net에 대한 좋은 책을 확실히 읽으므로 프레임 워크의 가치를 충분히 누릴 수 있습니다. 나도 똑같은 단계를 밟았으며 Andrew Troelsen이 ProC# 2008을 읽는 것이 좋습니다. 어쩌면 이미 그 책의 새로운 버전이 있습니다. –

+0

이 질문과 답변이 오래 되었기 때문에 링크 된 기사가 현재 일부 점에서 시대에 뒤진 것으로 주목할 가치가 있습니다. 예를 들어,이 기사에서는 "C#에서는 메서드 매개 변수에 기본값이 없습니다."라고되어 있지만 C# 4.0에서는 더 이상 true가 아닙니다. – Josh1billion

+0

새 버전이 있습니까? – ikku100

5

나는이 포인터는 정말 되지 않은 C 번호에서을 제거하는 것이 중요하다고 생각하지만, 그들은 여전히 ​​존재, 그들은 사방에, 그들은 참조이라고합니다.

+0

아직 거기에 - 컴퓨터가 없이는 작동하지 않을 수 있습니다. 실제로 일어난 일은 객체와 그 객체에 대한 포인터의 차이가 숨겨져 있다는 것입니다. 대개. –

+0

클래식 포인터는 특정 개체 또는 데이터의 위치의 직접 메모리 주소입니다. CLR은 힙을 압축하기 위해 메모리의 개체를 재정렬 할 수 있습니다. 따라서 객체에 대한 참조가 반드시 메모리에서의 위치를 ​​반영하지는 않습니다. –

+1

그리고 C#에서 포인터를 사용할 수 있습니다. 코드는 안전하지 않은 것으로 표시되어야합니다. http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx –

1

일반 컬렉션과 LINQ (LINQ에 관련된 모든 기술)에서 STL과 비슷한 기능을 찾습니다.

주목할 점은 ~/소멸자가 C++는 ~/finalizer가 C#과 아무 것도 같지 않다는 것입니다. IDisposable/using을 참조하십시오.

2

많은 질문 (pun inteded :-)과 C++과 C#의 차이점에 대해 많은 리소스를 가지고있는 유사한 질문이 있었고 전환 학습시주의해야 할 점은 Linux/C++ programmer to Windows/C# programmer입니다.

5

찰스 페 졸드는 C# 및 .NET을 배우고 싶은 C/C++ 윈도우 프로그래머를 위해 특별히 디자인 된 .NET Book Zero 있습니다. 그의 사이트에서 무료로 다운로드 할 수 있습니다. 이 책에 사용 된 모든 소스 코드는 별도의 Zip 파일 다운로드로 사용할 수 있습니다.

+0

링크가 죽은 것 같습니다. – RedX