인터페이스 ( Interface )
·
⭐C Sharp/11. 객체 지향
인터페이스 ( Interface )객체지향 프로그래밍에서 중요한 설계 개념 중 하나."어떻게 동작하는지는 몰라도, 무엇을 할수 있는지"만 알면 된다. 인터페이스는 구현 ( Implementation )을 포함하지 않고, 멤버의 시그니처 ( signature )만 정의한다.클래스나 구조체는 :인터페이스명 을 통해 이를 구현 ( Implement ) 해야 한다. 인터페이스는 "클래스가 따라야 할 약속 또는 규칙"이다. 인터페이스는 속성 , 메서드 , 이벤트 , 인덱서의 선언 ( signature )만 포함한다.실제 구현은 인터페이스를 상속받은 클래스가 한다. 문법▼인터페이스 정의public interface IAttackable{ void Attack(); // 메서드 시그니처 ..
📘 C# 용어
·
⭐C Sharp/📌용어 사전
📂 0. 메모리 구조할당 : 변수를 위해 메모리를 확보하는 것해제 : 사용이 끝난 메모리를 비우는 것메모리 누수 : 해제되지 않아 낭비되는 메모리스택 ( Stack ) : 지역 변수 , 매개 변수 , 함수 호출 정보 등이 저장되는 메모리 영역 ( 함수 종료시 해제 )힙 ( Heap ) : 참조 타입 객체가 저장되는 메모리 영역, 가비지 컬렉터 ( GC ) 가 관리한다.데이터 ( Data ) : 전역 , 정적 , 상수 데이터가 저장된 영역코드 ( Code ) : 실행할 명령어가 저장된 영역가비지 컬렉터 ( GC ) : 사용하지 않는 Heap 메모리를 자동으로 회수하는 기능 📂 1. 실행 방식정적 ( Static ) : 프로그램 실행 중에 한 번만 할당되고 모든 곳에서 공유동적 ( Dynamic ) :..
this ( 매개변수 키워드 )
·
⭐C Sharp/11. 객체 지향
this ( 매개변수 키워드 )this 는 매개변수 전달 방식이 아니라, 현재 인스턴스 ( 객체 자기 자신 ) 를 가리키는 키워드이다.클래스나 구조체 내부에서 자기 자신의 필드 , 속성 , 메서드 , 인스턴스 를 가리킬 때 사용한다. 문법class ClassName{ private int value; public ClassName(int value) { this.value = value; // 매개변수 value와 멤버 변수 value를 구분 } public void Show() { Console.WriteLine(this.value); // 현재 객체의 value 출력 }} 주의 사항1. 정적 ( static ) 메세더에서는 사용 불..
in ( 매개변수 키워드 , 참조 전달 )
·
⭐C Sharp/07. 메서드(함수)
in ( 매개변수 키워드 )C# 에서 in 매개변수 키워드는 잘 쓰이지 않지만, 읽기 전용 참조 전달을 할 때에 유용하다.in 키워드는 매개변수를 참조로 전달 ( ref / out 처럼 ) 한다.메서드 안에서 앖을 수정할 수 없게 ( 읽기 전용 ) 만드는 역할을 한다.값 형식 ( 구조체 같은 큰 데이터 ) 을 복사하지 않고 참조로 전달하므로 성능 최적화에 유용 문법▼메서드 정의public void MyMethod(in int number){ // number = 20; 컴파일 에러! in 매개변수는 수정 불가 Console.WriteLine(number); // 읽기 전용 사용 가능} ▼메서드 호출int x = 10;MyMethod(x); // 호출할 때는 그냥 변수 전달 가능My..
out ( 매개변수 키워드 , 참조 전달 )
·
⭐C Sharp/07. 메서드(함수)
out ( 매개변수 키워드 )out 키워드는 메서드의 매개변수를 참조 ( Reference ) 로 전달하는 방식 중 하나이다.ref 와 달리 호출하는 쪽에서 변수를 초기화할 필요는 없다.메서드 안에서 해당 매개변수에 반드시 값을 할당해야 한다.주로 여러 개의 값을 반환해야 할때 사용된다. 문법▼메서드 정의 반환형 메서드이름(매개변수1, out 자료형 변수명, ...) ▼메서드 호출메서드이름(값1, out 변수명); 예시 코드using System;class Program{ // 두 정수를 나눠서 몫과 나머지를 out으로 반환 static void Divide(int a, int b, out int quotient, out int remainder) { quotient = ..
ref ( 매개변수 키워드 , 참조 전달 )
·
⭐C Sharp/07. 메서드(함수)
ref ( 참조 전달 , 매개변수 키워드 )ref 는 메서드의 매개변수를 참조 ( Reference ) 로 전달할 때 사용하는 키워드이다.기본적으로 C# 에서 값 형식 ( Value Type ) 은 메서드 호출 시 복사되어 전달된다.그래서 메서드 안에서 값을 변경해도 원본에는 영향이 없다.ref 를 붙이면 원본 변수를 직접 참조하기 때문에, 메서드 안에서 수정하면 호출한 쪽 변수도 같이 변경된다. 문법▼메서드 정의void ChangeValue(ref int number){ number = 100; // 원본 변수 자체가 변경됨} ▼메서드 호출int x = 10;ChangeValue(ref x);Console.WriteLine(x); // 100 출력 ref 는 메서드 정의와 호출 양쪽 모두에 붙..
참조 ( Reference Type )
·
⭐C Sharp/10. 참조
참조 ( Reference Type )참조 타입의 객체가 지역변수로 생성되면 힙 ( Heap ) 메모리에 원본 데이터가 올라간다.그 객체를 가리키는 변수는 그 주소값을 스택 ( Stack ) 메모리에 저장한다. 메모리 저장 위치 설명class Player{ public string Name;}Player plr = new Player(); plr : 스택 ( Stack ) 에 위치 ( 4 byte 또는 8 byte 주소값 )new Player() : 힙 ( Heap ) 에 실제 원본 데이터를 할당한다. 인스턴스를 생성한다 ( 실제 데이터 공간 )변수 plr 는 힙의 메모리 주소를 가리키는 역할을 한다.class Monster{ public string Name; public int Leve..
제네릭 ( Generic )
·
⭐C Sharp/15-1. 제네릭
제네릭 ( Generic )제네릭은 클래스 , 메서드 , 구조체 등에 데이터 타입을 매개변수화 해서 코드의 재사용성과 타입 안정성을 높이는 문법이다.자료형을 고정하지 않고 어떤 타입이든 받을 수 있도록 만든 문법이다. 1. 제네릭 클래스 선언public class Box{ private T item; public void SetItem(T value) { item = value; } public T GetItem() { return item; }} 람다식 ( => ) 을 사용하면 코드를 간결하게 할수 있다.public class Box // → 타입 매개변수{ private T item; public void SetItem(T..
딕셔너리<TKey , TValue> ( Dictionary )
·
⭐C Sharp/15-5. 딕셔너리 해시테이블
딕셔너리딕셔너리는 자료구조 중에서 데이터를 Key 와 Value 의 쌍으로 저장하는 해시 테이블 ( Hashtable ) 을 기반으로 하는 제네릭 컬렉션이다. 배열이나 리스트처럼 순서 ( Index ) 로 접근하는 것이 아니라, 고유한 키 ( Key ) 를 통해 값 ( Value ) 을 빠르게 조회할 수 있다. 선언과 초기화Dictionary 변수명 = new Dictionary();- TKey : 키의 자료형- TValue : 값의 자료형 초기 값을 설정할 수 있다.Dictionary scores = new Dictionary(){ { "장한", 90 }, { "호찬", 85 }, { "윤수", 100 }}; 요소 추가dict.Add("향숙", 60); // Add 메서드로 추가d..