목록C# 기초문법 (14)
코드몽키블로그#
C# class (클래스) C# class 키워드는 Reference Type을 정의하는데 사용된다. 클래스는 메서드 (Method), 속성 (Property), 필드 (Field), 이벤트 (Event) 등을 멤버로 포함하는 소프트웨어 단위로서 보통 이 클래스 정의로부터 객체 (Object)를 생성해서 사용하게 된다. 클래스를 정의할 때 중요한 멤버는 공용(public) 메서드와 속성인데, 이 public 멤버들은 외부 객체와의 상호작용을 위해 사용되어 진다. 클래스 멤버종류설명 메서드 (Method) 클래스에서 실제 행동을 일으키는 코드 블럭. 대개 동사 혹은 동사+명사 식으로 메서드명을 정함. 예) Calculate(), DeleteData() 속성 (Property) 클래스의 내부 데이타를 외부에..
Value Type vs Reference Type C#은 Value Type과 Reference Type을 지원한다. C#에서는 struct를 사용하면 Value Type을 만들고, class 를 사용하면 Reference Type을 만든다. C# .NET의 기본 데이타형들은 struct로 정의되어 있다. 즉, int, double, float, bool 등의 기본 데이타 타입은 모두 struct로 정의된 Value Type이다. Value Type은 상속될 수 없으며, 주로 상대적으로 간단한 데이타 값을 저장하는데 사용된다. Reference Type은 class를 정의하여 만들며 상속이 가능하고, 좀 더 복잡한 데이타와 행위들을 정의하는 곳에 많이 사용된다. Value Type의 파라미터 전달은 데..
C# 네임스페이스 .NET Framework은 무수하게 많은 클래스들을 가지고 있는데, 예를 들면 .NET 4.0은 약 11,000개의 클래스를 가지고 있다. 이렇게 많은 클래스들을 충돌없이 보다 편리하게 관리/사용하기 위해 .NET에서 네임스페이스를 사용한다. C#에서도 이러한 개념을 적용하여 클래스들이 대개 네임스페이스 안에서 정의된다. 비록 클래스가 네임스페이스 없이도 정의 될 수는 있지만, 거의 모든 경우 네임스페이스를 정의하는 것이 일반적이다. namespace MyNamespace { class A { } class B { } } 네임스페이스 참조 네임스페이스를 사용하기 위해서는 두가지 방식이 있다. 첫째는 클래스명 앞에 네임스페이스 전부를 적는 경우와 둘째는 프로그램 맨 윗단에 해당 usin..
C# yield C#의 yield 키워드는 호출자(Caller)에게 컬렉션 데이타를 하나씩 리턴할 때 사용한다. 흔히 Enumerator(Iterator)라고 불리우는 이러한 기능은 집합적인 데이타셋으로부터 데이타를 하나씩 호출자에게 보내주는 역할을 한다. yield는 yield return 또는 yield break의 2가지 방식으로 사용되는데, (1) yield return은 컬렉션 데이타를 하나씩 리턴하는데 사용되고, (2) yield break는 리턴을 중지하고 Iteration 루프를 빠져 나올 때 사용한다. yield 의 간단한 예제로 아래 코드를 살펴보자. GetNumber() 라는 메서드는 3개의 yield return 문을 가지고 있다. 만약 외부에서 이 GetNumber()를 호출하게 ..
C# for 반복 구문 C# for 문은 루프 안에 있는 문장들을 반복적으로 실행할 때 사용한다. for 루프는 일반적으로 카운터 변수를 이용해 일정 범위 동안 for 루프 안의 블럭을 실행한다. 다음 예제는 0부터 9까지 총 10번 콘솔 출력을 반복하는 코드이다. class Program { static void Main(string[] args) { // for 루프 for (int i = 0; i < 10; i++) { Console.WriteLine("Loop {0}", i); } } } C# foreach 반복 구문 C# foreach 문은 배열이나 컬렉션에 주로 사용하는데, 컬렉션의 각 요소를 하나씩 꺼내와서 foreach 루프 내의 블럭을 실행할 때 사용된다. 다음 예제는 문자열 배열을 fo..
C# if 조건문 if 문은 조건식이 참, 거짓인지에 따라 서로 다른 블럭의 코드를 실행하게 한다. 예를 들면, if (조건식) { 블럭1 } else { 블럭2 } 문장의 경우, 조건식이 참이면 블럭1을 실행하고, 거짓이면 블럭2를 실행한다. 아래 예제는 a값이 0 이상이면 val는 a 값을 그대로 갖고, 0보다 작으면 -a 값을 갖는 표현이다. int a = -11; if (a>=0) { val = a; } else { val = -a; } // 출력값 : 11 Console.Write(val); C# switch 조건문 switch 문은 조건값이 여러 값들을 가질 경우 각 case 별 다른 문장들을 실행할 때 사용된다. 각각의 경우에 해당하는 값을 case 문 뒤에 지정하며, 어떤 경우에도 속하지 ..
C# 연산자 C#은 다른 프로그래밍 언어와 비슷하게 수식 연산자, 논리 연산자, 조건 연산자등 다양한 연산자들을 제공하고 있다. 아래 표는 각 카테코리별 연산자 및 그 샘플을 예시한 것이다. 연산자 타입연산자예제 산술 연산자 +, -, *, /, % int a = (x + y - z) * (b / c) % d; 할당 연산자 =, +=, -=, *=, /=, %= int a = 100; sum += a; [설명] sum += a 는 sum = sum + a 를 축약한 표현이다. 증감 연산자 ++, -- int i = 1; i++; [설명] i++ 는 i = i + 1 를 축약한 표현이다. 논리 연산자 && (And), || (Or), ! (Not) if ((a > 1 && b < 0) || c == 1 |..
C#의 키워드 enum은 열거형 상수(constant)를 표현하기 위한 것으로 이를 이용하면 상수 숫자들을 보다 의미있는 단어들로 표현할 수 있어서 프로그램을 읽기 쉽게 해준다. enum의 각 요소는 별도의 지정없이는 첫번째 요소가 0, 두번째 요소가 1, 세번째 요소가 2 등과 같이 1씩 증가된 값들을 할당받는다. 물론, 개발자가 임의로 의미있는 번호를 지정해 줄 수도 있다. enum문은 클래스 안이나 네임스페이스 내에서만 선언될 수 있다. 즉, 메서드 안이나 속성 안에서는 선언되지 않는다. 아래 예제는 Category 라는 enum 타입을 정의한 예인데, Cake는 숫자 0을 갖고, IceCream은 1, Bread는 2라는 값을 갖는다. 프로그램상에서 Category 값을 0, 1 처럼 직접 쓰는 ..
C# 문자열 문자열(string)은 프로그램에서 가장 많이 쓰이는 데이타 타입 중의 하나이다. C#에서 문자열(string)은 이중부호를 사용하여 표현되며, 단일 문자(char)는 단일부호를 사용하여 표현된다. C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, 따라서 System.String 클래스의 모든 메서드와 속성(Property)을 사용할 수 있다. 예를 들어 일정 문자열 부분만 뽑아내는 Substring() 메서드, 문자열 길이를 구하는 Length 속성 등을 모두 사용할 수 있다. C# 문자열은 Immutable 즉 한번 문자열이 설정되면, 다시 변경할 수 없다. (주: 한번 그 값이 설정되면 다시 변경할 수 없는 타입을 Immutable Type이라 부르고,..
C# 배열 (Array) 배열은 일련의 동일한 데이타 타입 요소들로 구성된 데이타 집합으로서, 인덱스를 통하여 개개의 배열요소(Element)를 엑세스할 수 있다. C#에서 배열은 Zero-based Array 즉 첫번째 요소가 인덱스 0을 갖는다. 두번째 요소는 인덱스 1, 그 다음 요소들은 인덱스 2, 3, ... 등을 갖는다. 배열의 요소는 Sqaure Bracket([ ])안에 인덱스를 넣어 표시한다. 즉, 배열 A의 첫번째 요소는 A[0] 으로 표시한다. C# 배열은 1차배열, 2차배열, 3차배열,..., 32차 배열 등 최고 32차 배열을 가질 수 있다. 2차 이상의 다차원 배열은 (1)각 차원별 요소 크기가 고정된 Rectangular 배열과 (2) 각 차원별 크기가 서로 다른 가변배열로 나..