📘프로그래밍/C# 13

[C#] 13 List

정의 인덱스로 접근할 수 있는 강력한 형식의 개체 목록  ▼ 기본 속성더보기 네임스페이스               System.Collections.Generic어셈블리                       System.Collections.dll소스                               List.cs              기능   기본 형식 다음은 목록 생성의 기본 형식입니다.List ListName = new List();List ListName = new List(Int32); T 는 사용자가 지정한 데이터형 입니다. 매개변수로 값을 전달할 경우 해당 크기를 갖는 목록을 생성합니다.   기본 메서드 List 클래스는 생성된 목록을 검색, 정렬 및 조작하는 메서드를 기본적으로 제공..

[C#] 12 네임스페이스

정의 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역   의의 네임스페이스를 통해 코드를 논리 그룹으로 구분이 가능합니다. 또한, 프로그램을 구성하는 코드에 여러 라이브러리가 포함된 경우에 발생할 수 있는 이름 충돌을 방지할 수 있습니다.   기능 다음은 네임스페이스의 기본 선언 형식입니다.namespace NamespaceName{ class ClassName { public: void Func1() {} } // void Func2() {}} 네임스페이스에 선언된 클래스 및 해당 클래스 멤버는 외부에 선언된 것과 같은 이름을 가질 수 있습니다. 네임스페이스에 직접 포함될 수 있는 멤버는 클래스 뿐입니다. 필드나 메서드 같은 멤버는 클래스 내..

[C#] 11 정적 멤버

정의  정적(static) 멤버란?클래스에는 속하지만, 객체 별로 할당되지 않고 클래스의 모든 객체가 공유하는 멤버   의의  정적 멤버의 경우 일반 멤버와 다르게 프로그램이 실행되는 동안 유지되므로 객체들이 프로그램 전반에 걸쳐 공유하는 주요 데이터를 관리하는 목적으로 사용합니다.   기능  정적 멤버의 주요 특징은 다음과 같습니다.객체를 생성하지 않고 클래스를 직접 참조하여 접근합니다.프로그램이 시작할 때 메모리가 확보돼서 프로그램이 종료될 때까지 유지됩니다.클래스 소속이지만 메모리를 클래스와 별도로 생성합니다.  선언 방법 정적 멤버 선언은 일반적인 멤버 변수 및 함수 선언 앞에 static 키워드를 추가합니다.static datatype variable-name; // 정적 멤버 변수의 선..

[C#] 10 REF / OUT

정의 값 타입(value type) 의 변수들을 참조 타입(reference type) 처럼 동작하도록 허용하는 키워드   의의 함수에 값 타입 변수 A를 매개변수로 전달할 경우 함수 내부에서 A의 값을 변형시켜도 원본은 유지됩니다. 함수에 참조 타입 변수 B를 매개변수로 전달할 경우 함수 내부에서 B의 값을 변형시키면 같은 저장 공간을 참조하는 원본에도 반영됩니다.  즉, 다음과 같은 기능을 수행하기 위해 사용됩니다.매개변수로 전달한 함수 내부에서 원본 변수를 변형시킬 수 있습니다.매개변수로 전달한 함수는 해당 변수에게 대입하려는 값을 반환할 필요가 없습니다.   기능  기본 형식 - ref 일반 변수 앞에 ref 키워드를 추가하면 ref 변수로 동작합니다. ref 변수에는 반드시 ref 변수를 대입해..

[C#] 09 생성자 / 소멸자

정의 생성자(Constructor) 란?객체의 생성과 동시에 자동으로 한 번 호출되는 메소드 소멸자(Destructor) 란?객체의 메모리가 소멸될 때 자동으로 한 번 호출되는 메소드   기능  생성자 생성자의 선언 방법은 다음과 같습니다.클래스명 () { ··· }클래스명 ( 매개변수1, 매개변수2, ··· ) { ··· }  주요 특징은 다음과 같습니다.생성자의 이름은 반드시 해당 클래스명과 일치해야 합니다. 오버로딩이 가능합니다. 매개변수가 없는 형식은 기본 생성자 입니다. 주로 클래스 객체 생성함과 동시에 멤버 변수들을 초기화 하려는 목적으로 사용됩니다.   다음은 생성자를 이용한 클래스 객체 생성 예시입니다. #1 Monster 클래스 선언/* #1 몬스터의 기본 정보를 나타내는 Monster ..

[C#] 08 클래스

정의 클래스(Class) 란?같은 목적을 갖는 여러 데이터형 변수들과 메서드들의 집합   의의 객체 지향 프로그래밍(Object-Oriented Programming) 이란?실생활에서 우리가 인식할 수 있는 사물은 객체(object) 로 표현합니다. 이러한 객체의 속성 및 행동을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍 입니다. 클래스(class) 는 객체를 주조하는 틀과 같은 역할을 합니다.   기능  구조체(structure) 과의 차이점 가장 큰 차이점은 구조체 객체는 값 타입(value type), 클래스 객체는 참조 타입(reference type) 인 것입니다. 새로운 변수에 각자의 객체를 대입할 경우 구조체 객체는 원본 데이터를 통째로 복사하여 독립적인 저장 공간을 구축하는 ..

[C#] 07 구조체

정의 구조체(Struct) 란?사용자가 기본 타입의 데이터를 가지고 새롭게 정의할 수 있는 사용자 정의 타입   의의 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 정의한 데이터형 으로, 기본 데이터형으로는 정의하기 어려운 복잡한 데이터를 표현할 수 있습니다.   기능  선언 방법 구조체 선언은 struct 키워드를 사용하며, structure-name 은 구조체명, member-name 은 구조체 멤버 변수명입니다. member-variable-list 는 해당 구조체에 속한 멤버 변수들의 리스트로, 멤버 변수들의 데이터 타입은 서로 다를 수 있습니다.struct structure-name{ // member-variable-list}  구조체 변수의 데이터 타입명은 structure-name 가..

[C#] 06 디폴트 매개변수

정의 디폴트 매개변수(Default Parameter) 란?함수를 호출할 때 매개변수를 전달하지 않으면 자동으로 사용되는 미리 정의된 값   기능  선언 방법 C# 에서 디폴트 매개변수를 설정할 때에는 다음을 주의해야 합니다.디폴트 매개변수는 함수의 원형 에만 지정할 수 있습니다.디폴트 매개변수는 가장 오른쪽부터 시작하여 연속적으로 만 지정할 수 있습니다.가운데 인수들만 별도로 디폴트 매개변수를 지정할 수는 없습니다. 다음은 디폴트 매개변수를 설정한 함수의 원형 예시입니다.void Display(int x, int y, char ch, int z = 4);void Display(int x, int y, char ch = 'a', int z = 4);void Display(int x, int y = 2, ..

[C#] 05 메서드 오버로딩

정의 하나의 메서드 이름으로 여러 개의 메서드를 구현하는 것   의의 매개변수의 형식 만 다르다면 같은 메서드 이름을 사용할 수 있습니다. 이는 하나의 메서드에 다양한 형식의 데이터를 매개변수로 사용하고자 하는 경우 효과적입니다.    기능 메서드 오버로딩의 필수 조건 은 다음과 같습니다.메서드 명이 서로 일치합니다.매개변수 형식이 상이합니다. 메서드 오버로딩을 사용한 선언 예시는 다음과 같습니다.// 예) 매개변수의 합을 반환하는 함수 선언// 매개변수 형식: int, intint Plus(int a, int b){ return a + b;}// 오버로딩_ 매개변수 형식: float, floatint plus(float a, float b){ return (int)(a + b);}// 오버로..

[C#] 04 열거형

정의 사용자가 의미 있는 키워드를 부여한 일련의 정수 상수의 집합   기능  선언 방법 enum 키워드를 사용하며, identifier 는 열거형 목록인 enumerator-list 의 태그 라고 합니다. enumerator-list 는 열거형 집합의 멤버를 정의합니다.enum identifier{ // enumerator-list}   접근 방법 열거형의 태그 identifier 를 참조하여 열거형 멤버 enumerator-list-member 에 접근하며, 이를 datatype 으로 형변환 하여 리터럴로 사용이 가능합니다. datatype variable = (datatype)identifier.enumerator-list-member;   사용 예시 enum GameResult{ Win ..