C#: 두 판 사이의 차이

33번째 줄: 33번째 줄:
== 버전 ==
== 버전 ==


{| class="wikitable" style="float:left; text-align:center; border:2px solid #9932CC;"
{| class="wikitable" style="margin:auto; text-align:center; border:2px solid #9932CC;"
|-
|-
| style="background:#9932CC;" {{!}} {{색|white|버전}}
| style="background:#9932CC;" {{!}} {{색|white|버전}}

2018년 11월 12일 (월) 15:48 판

틀:올바른 제목

프로그래밍 언어
언어 이름 C#
개발 주체 마이크로소프트
표준안 ECMA-334
ISO/IEC 23270
패러다임 객체지향적

C#은 마이크로소프트에서 개발한 객체지향적 프로그래밍 언어로 윈도우 프로그램, 웹 프로그램, 웹 서비스 등을 개발할 수 있다.[1] Java가 실행시 JRE를 필요로 하듯 C#은 .NET Framework를 필요로 한다.

C# 프로그램은 실행시에 컴파일된다.

프로그래밍 언어의 명세는 ECMA-334 표준이다.

특징

  • 객체지향 패러다임이다. (class, struct, interface등의 개념이 있다.)
  • 클래스 다중 상속은 불가능하다. (다만 인터페이스 다중 상속은 가능)
  • 기존에 만들어진 여러 클래스들 (e.g. System.XML.XMLDocument)을 쉽게 사용할 수 있어 생산성이 높다.
  • 가베지 콜렉터가 있어 메모리 관리에 신경 쓸 필요가 적다.
  • unsafe 블럭 내에서 포인터 연산을 할 수 있다. (다만 권장되진 않는다.)

Mono

C# 및 VB.NET 등 .NET 계열 언어로 만들어진 프로그램들은 보통 윈도우에서 구동되지만 Java과 같은 중간 언어 (CIL, MSIL로 불리기도 한다.)를 가지기에 리눅스에서도 mono를 사용하면 CIL로 작성된 프로그램(C# 또는 VB.NET으로 작성된 프로그램) 구동할 수 있다.

다만 오류가 날 수도 있고 윈도우 플랫폼에서만 작동되는 코드[DllImport]가 있을 수 있기에 모든 C# 프로그램들을 안정적으로 돌릴 순 없다.

안드로이드/iOS 애플리케이션 개발

Xamarin을 설치하여 개발할 수 있다, 하지만 부분 유료화이고 특히 무료 사용자는 Visual Studio랑 연동 불가능하다(30일 체험판 제외). 닥치고 무조건 Xamarin Studio다.

버전

버전 플랫폼 표준 출시일 변경사항
1.0 .NET Framework 1.0 ECMA-334 2002년 1월 -
1.1 .NET Framework 1.1 2003년 4월 -
2.0 .NET Framework 2.0 ECMA-334 2005년 11월 [2]
3.0 .NET Framework 2.0~3.5 - 2007년 11월 [3]
4.0 .NET Framework 4.0 - 2010년 4월 [4]
5.0 .NET Framework 4.5 ECMA-334 2012년 8월 [5]
6.0 .NET Framework 4.6 - 2015년 7월 [6]
7.0 .NET Framework 4.7 - 2017년 3월

개발 프로그램

각주

  1. MSDN 문서
  2. 제네릭, 파셜(partial) 타입, 열거자(iterator), nullable, 속석 멤버, 정적 클래스, 대리자(delegate) 추가.
  3. 암시적 형식의 로컬변수(var), 객체 및 컬렉션 초기자, 자동구현 프로퍼티 (get; set; 만으로 getter / setter 메소드가 구현되는 편의 ㄱ ㅣ능), 익명 타입, 확장 메소드(기존 클래스에 확장되는 메소드로, 지정 타입에 메소드처럼 사용은 가능하나 해당 타입의 접근 제한된 멤버는 접근 불가능), 질의 표현식(Linq의 시초), 람다식, 표현식 구조, 파셜 메소드 추가
  4. 동적 바인딩(dynamic, 초기화 후에도 다른 타입으로 값을 할당할 수 있는 특징이 있다.), 이름있는 선택적 메소드 인자(argument) 추가.
  5. 비동기 메소드(async / awit), 호출정보 특성 추가
  6. Roslyn 기반의 동적 컴파일러, 네임스페이스 정의란에 정적 타입 별칭 정의, 예외 필터, 비동기 try / catch / finally 구문, 자동구현 속성 할당, 읽기 전용 속성 기본값 할당, 멤버에 표현식 지원, 계층형 null 체크, 치환형 문자열 식, nameof 식(주로 멤버 및 타입 등 정의된 명칭을정확하게 문자열로 표현하는 식), Dictionary 초기자 추가.