C#을 배우는 Python 개발자를 위한 로드맵
C#과 Python은 비슷한 개념을 공유합니다. Python을 이미 아는 경우 다음과 같은 친숙한 구성은 C#을 학습하는 데 도움이 됩니다.
- 개체 지향: Python과 C#은 모두 개체 지향 언어입니다. Python의 클래스에 대한 모든 개념은 구문이 다르더라도 C#에 적용됩니다.
- 크로스 플랫폼: Python과 C#은 모두 크로스 플랫폼 언어입니다. 두 언어 중 하나로 작성된 앱은 많은 플랫폼에서 실행될 수 있습니다.
- 가비지 수집: 두 언어 모두 가비지 수집을 통해 자동 메모리 관리를 사용합니다. 런타임은 참조되지 않은 개체에서 메모리를 회수합니다.
- 강력한 형식: Python과 C#은 모두 강력한 형식의 언어입니다. 형식 강제 변환은 암시적으로 발생하지 않습니다. C#은 정적으로 형식화되지만 Python은 동적으로 형식화되는 차이점이 있으며, 이는 이후에 설명합니다.
- Async/ Await: Python의
async
및await
기능은 C#의async
및await
지원에서 직접 영감을 받았습니다. - 패턴 일치: Python의
match
식 및 패턴 일치는 C#의 패턴 일치switch
식과 유사합니다. 이를 사용하여 복잡한 데이터 식을 검사하여 패턴과 일치하는지 확인할 수 있습니다. - 문 키워드: Python과 C#은
if
,else
,while
,for
등 많은 키워드를 공유합니다. 두 언어는 모든 구문이 동일하지는 않지만, Python을 알고 있는 경우 C#을 읽을 수 있을 만큼 유사합니다.
C#을 배우기 시작하면서 Python과는 다른 다음과 같은 중요한 개념을 알게 됩니다.
- 들여쓰기 대 토큰: Python에서 줄 바꿈 및 들여쓰기는 일류 구문 요소입니다. C#에서는 공백이 중요하지 않습니다.
;
개별 문과 같은 토큰과 기타 토큰{
및}
은(는)if
및 기타 블록 문에 대한 블록 범위를 제어합니다. 그러나 가독성을 위해 대부분의 코딩 스타일(이러한 문서에 사용된 스타일 포함)은 들여쓰기를 사용하여{
과(와)}
이(가) 선언한 블록 범위를 강화합니다. - 정적 형식 지정: C#에서는 변수 선언에 해당 형식이 포함됩니다. 변수를 다른 형식의 개체에 다시 할당하면 컴파일러 오류가 발생합니다. Python에서는 다시 할당할 때 형식이 변경될 수 있습니다.
- nullable 형식: C# 변수는 null 허용 또는 null을 허용하지 않는 것일 수 있습니다. null을 허용하지 않는 형식은 null이(또는 아무것도) 될 수 없는 형식입니다. 이 형식은 항상 유효한 개체를 참조합니다. 반면 nullable 형식은 유효한 개체 또는 null을 참조할 수 있습니다.
- LINQ: LINQ(Language-Integrated Query)를 구성하는 쿼리 식 키워드는 Python의 키워드는 아닙니다. 그러나
itertools
,more-itertools
,py-linq
과(와) 같은 Python 라이브러리가 비슷한 기능을 제공합니다. - 제네릭: C# 제네릭은 C# 정적 형식 지정을 사용하여 형식 매개 변수에 제공된 인수에 대한 어설션을 만듭니다. 제네릭 알고리즘은 인수 형식이 충족해야 하는 제약 조건을 지정해야 할 수 있습니다.
마지막으로 C#에서는 사용할 수 없는 Python 언어 기능이 있습니다.
- 구조적(덕) 형식 지정: C#에서는 형식에 이름과 선언이 있습니다. tuples를 제외하고 구조가 동일한 형식은 서로 바꿔 사용할 수 없습니다.
- REPL: C#에는 솔루션을 신속하게 프로토타입하는 REPL(read–eval–print loop)이 없습니다.
- 중요 공백: 블록 범위를 기록하려면 중괄호
{
및}
을(를) 올바르게 사용해야 합니다.
Python을 알고 있다면 C# 배우기는 순조로운 여정입니다. 두 언어에서는 비슷한 개념과 관용어가 사용됩니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET