C#/강의 | Lecture

[C# 기본] 3. 기본 문법

SEO HOB 2018. 11. 29. 16:55

1. 단항 연산자

1-1. !, ~, ++, -- 등의 연산자가 있으며, C/C++의 연산자와 거의 동일


1-2. ! 연산자는 bool 형에만 사용 가능

- !true == false

- !false == true






2. 산술 연산자

2-1. *, /, %, -, + 등의 연산자가 있으며, C/C++의 연산자와 거의 동일


2-2. string에서 +는 문자열 연결

- 정수/부동 + "문자열" = 새로운 문자열

- Console.WriteLine(5.01f + "5"); // 문자열 5.015






3. 시프트(shift) 연산자와 관계 연산자

3-1. <<. >>, >=, <=, >, <, ==, != 등이 있으며, C/C++의 연산자와 거의 동일


3-2. C#에서의 관계 연산자 결과는 true, false

- C/C++에서는 0, 1 이지만 C#은 bool형이 true, false






4. is 연산자

4-1. 형식 호환을 조사하는 연산자, 결과는 true/false


4-2. 사용 형식은 아래와 같음

- '변수' is '클래스형 or 데이터형'

- int nValue = 10;

  if (nValue is float)

  {

    // todo...

  }






5. as 연산자

5-1. 형변환과 변환 조사

- 소괄호를 이용한 형변화 대신에 사용


5-2. 사용 형식은 아래와 같음

- string str1 = "abc";

  object obj = str1;

  string str2 = obj as string;






6. null 병합 연산자

6-1. ?? 키워드를 사용, null 조사


6-2. 사용 형식은 아래와 같음

- C = A ?? B // A가 null이 아니면 A를 C에 대입, null이면 B를 C에 대입

- int? x = null; // nullable

  int y = x ?? -1; // y에 -1 대입






7. 선택문

7-1. if-else 구문은 C/C++과 다르게 조건문 결과가 true/false


7-2. switch-case 구문의 조건은 정수, 문자상수, 문자열 사용

- C/C++에서는 정수, 문자상수만 지원했지만 C#은 string까지 가능

- 모든 case와 default에는 break가 반드시 존재







8. 반복문

8-1. for 구문은 C/C++과 동일함


8-2.while, do-while 구문은 C/C++과 동일함

- 조건은 true/false로 사용






9. foreach 반복문

9-1. 처음부터 끝까지 순차적으로 값을 반복해 읽는 전용 기능 (쓰기는 안됨)

9-2. 배열, 컬렉션의 데이터에 주로 사용


9-3. 컬렉션 중에 대표적인것이 ArrayList


9-4. 사용형식은 아래와 같음

- foreach(데이터형 변수 in 배열명or컬렉션명)

  {

    // todo...

  }

- int[] Array = {1,2,3,4};

  foreach (int nValue in Array)

  {

    // todo...

  }

- ArrayList List = new ArrayList();

  List.Add(1);

  List.Add(2);

  List.Add(3);

  foreach (int m in List)

  {

    // todo...

  }






10. 예외 처리문

10-1. 예외란 런타임 시에 발생할 수 있는 오류


10-2. 예외 처리방법은 if-else문, try-catch문 사용

- if-else문의 경우 예외 처리를 하기 위해 코드가 길어지는 현상 발생

- try-catch문에서 catch는 에러가 발생해야 수행


10-3. try-catch문 사용 형식은 아래와 같음

- try

  {

    // 예외가 발생할 수 있는 코드

  } catch (예외처리객체 e)

  {

    // 예외 처리

  }


10-4. 예외처리객체는 System.Exception 파생 객체만 사용

- OverFlowException, FormatException, IndexOutOfRangeException 등이 존재


10-5. try-catch문 안에서 초기화한 변수는 try-catch문 밖에서 사용 불가

- try-catch문에서 밖에서 초기화한 변수는 사용 가능


10-6. try-catch-finally 구문에서 finally는 예외 발생과 상관없이 항상 실행되는 구문

- finally는 에러가 발생하더라도 반드시 수행해야하는 코드를 작성

- 일반적으로 finally에는 파일에 내용을 저장하고 파일을 닫는 코드를 작성


10-7. 다중 예외 처리의 경우 사용 형식은 아래와 같음

- try

  {

    // 예외가 발생할 수 있는 코드

  } catch (OverFlowException e)

  {

    // 예외 처리

  } catch (FormatException e)

  {

    // 예외 처리

  }


10-8. throw는 예외 상황을 임의로 발생시키는 역할

- System.Exception 파생된 객체만 사용

- try문과 그 외에서 사용가능

- throw new IndexOutOfRangeException(); // 강제로 예외 상황 발생