Java 개발자의 C#공부

C#의 기본적인 정보

C#은 자바와 같은 객체지향 언어로 Class와 같은 Java에서 사용하는 객체지향적인 개념을 대부분 사용이 가능하며, C#도 자바와 같이 가비지컬렉션에 의하여 메모리를 관리한다.

C#의 이름의 유래로는 C언어에서 증가가 되었다는 C++에서 한번더 증가가 되었다는 의미로 C#이라는 이름을 사용하게 되었다. 그러나 C#은 C++과 다르게 C나 C++컴파일 환경에서 컴파일이 안된다는 특징이 있다.

C#은 자바에서 JVM이 있듯이 CLR(Common Language Runtime)이 있다. 이때 CLR은 C#만 지원을 하는것이 아니라 CLS(Common Language Specification)라는 규격에 따르는 모든언어를 지원을 하는 런타임 환경이다.

C#컴파일

C#의 컴파일은 2번정도 컴파일을 하는데, 일단 개발자가 C#을 이용하여 코드를 작성을 하면, C#을 IL(Intermediate Language)로 컴파일을 한다. 이렇게 변경이 된 IL을 CLR이 운영체제에 맞는 네거티브코드로 변경을 해주는 것으로 컴파일이 완료가 된다.

왜 이런 귀찮은 동작을 거치는가하면, 일단 IL로 변경이 되는 것은 C#뿐만이 아닌 위에 말했던 CLS를 준수하는 언어들을 IL로 변경이 가능하다. 그렇기에 IL이라는 형식을 중간에 두어 다른 언어로 작성이 된 코드를 IL형식으로 변경이 된 모든 코드를 CLR을 통해 각 운영체제에 맞는 코드로 작성을 하는 과정을 거치는 것이다.

데이터 형식

C#에서의 데이터 형식은 Java나 C와 거의 똑같으나 조금씩의 차이가 있어 다음의 표를 추가한다

데이터 형식 크기(바이트) 설명
sbyte 1 부호 O
byte 1 부호 X
short 2 부호 O
ushort 2 부호 X
int 4 부호 O
uint 4 부호 X
long 8 부호 O
ulong 8 부호 X
char 2 유니코드 문자
float 4 단일 정밀도 부동소수점 형식
double 8 복수 정밀도 부동소수점 형식
decimal 16 29자리 데이터를 표현할 수 있는 소수점 형식
bool 1 논리 형식

이정도가 기본적인 형식이며, 여기에 Java와 같이 object형이 추가가 된다. 그리고 데이터 선언 형식 중에 Nullable이라는 방법이 있는데, 위와같이 값을 저장하는 변수를 선언할때 int? number과 같이 ?를 넣어주면 이변수에는 null값은 넣을 수 있게 만들어 주는것이다. 또한 C#에서는 JavaScript와 같이 var을 사용이 가능하나, 크게 두가지 규칙을 지켜줘야한다. var형식의 변수는 선언과 동시에 값을 넣어 줘야한다는점과, 오로지 지역변수로만 사용이 가능하다는 점이다. 이 두가지를 잘 지키면 유용하게 사용이 가능할 것 같다

foreach

Java에서의 foreach

for(Object e : list){
    System.out.println(e.toString());
}

C#에서의 foreach

foreach (Object e in list){
    Console.WriteLine(e);
}

후기

일단 객체 지향적인 개념이 들어가지 않은 부분에서 위와 같은 차이점을 찾았으며, namespace부분은 아직 자세히 공부를 하지 않아 설명을 하지 않았다.

results matching ""

    No results matching ""