방명록
- C# #15 인터페이스, 열거형, 예외 처리, 값형과 참조형2023년 08월 24일 20시 34분 02초에 업로드 된 글입니다.작성자: noun06
인터페이스(Interface)
- 클래스 혹은 구조체간의 공통된 기능을 공유하여 공통된 동작을 정의하는데 사용된다.
- 다중 상속이 지원되지 않는 C#에서 인터페이스는 다중 상속을 지원하여 더 다양한 동작을 조합하고 수행한다.
- 클래스와 인터페이스 간에 느슨한 결합을 형성하여 유연한 설계를 가능하게 한다. (느슨한 결합은 각 클래스와 객체들 간의 의존성을 최소화하여 수정, 변경의 영향을 최소화하는 개념이다.)
- 인터페이스 정의하기
public interface IMovable // 대문자 I를 인터페이스명 앞에 붙힌다 { void Move(int x, int y); // 이동 메서드 선언 }
- 인터페이스를 구현하는 클래스 생성하기
public class Player : IMovable { public void Move(int x, int y) { // 플레이어의 이동 구현 } } public class Enemy : IMovable { public void Move(int x, int y) { // 적의 이동 구현 } }
- 인터페이스를 사용하여 객체 이동하기
IMovable movableObject1 = new Player(); IMovable movableObject2 = new Enemy(); movableObject1.Move(5, 0); // 플레이어 이동 movableObject2.Move(1, 9); // 적 이동
열거형(Enums)
- 서로 관련이 있는 명명된 상수들의 집합을 정의하는 데 사용된다. 코드의 가독성을 향상시키며 스위치 문과의 호환성이 좋다. 열거형의 각 상수는 주로 값으로 지정되지만 열거형 값 사이의 형변환을 지원한다.
- 열거형 정의 및 상수 값 정의
enum MyEnum { Value1 = 1, Value2, Value3 }
- 열거형 사용
MyEnum myEnum = MyEnum.Value1;
- 열거형 형변환
int intValue = (int)MyEnum.Value1; // 열거형 값을 정수로 변환 MyEnum enumValue = (MyEnum)intValue; // 정수를 열거형으로 변환
- 스위치 문 사용
switch(enumValue) { case MyEnum.Value1: // Value1에 대한 처리 break; case MyEnum.Value2: // Value2에 대한 처리 break; case MyEnum.Value3: // Value3에 대한 처리 break; default: // 기본 처리 break; }
예외처리(Exception Handling)
- 프로그램이 실행 중에 발생하는 예상치 못한 상황 또는 오류를 처리하는 메커니즘.
- try: 예외가 발생할 수 있는 코드.
- catch: 예외가 발생한 경우 해당 예외를 처리하기 위한 코드.
- finally: 예외 발생 여부와 관계없이 반드시 실행되는 코드.
- throw: 사용자 정의 예외처리, 특정 상황에서 예외를 강제로 발생시키는 코드.
try { // 예외가 발생할 수 있는 코드 int result = Divide(10, 0); Console.WriteLine("Result: " + result); } catch (DivideByZeroException ex) { // 예외 처리 코드 Console.WriteLine("Error: " + ex.Message); } finally { // 항상 실행되는 코드 (예: 리소스 정리) Console.WriteLine("Cleanup"); } int Divide(int a, int b) { if (b == 0) throw new DivideByZeroException("Cannot divide by zero."); return a / b; }
값형(Value Type)과 참조형(Referecne Type)
- 값형은 변수에 값을 직접 저장하며 데이터를 스택 메모리에 저장한다.
- 변수가 실제 데이터를 보유하고 있으며, 해당 변수를 다른 변수에 할당하거나 전달 할 때는 값이 복사된다.
- int, float, char, bool, struct 등
- 참조형은 변수가 실제 값 대신에 데이터에 대한 참조(메모리 주소)를 저장한다. 실제 데이터는 힙 메모리에 저장된다.
- 변수가 실제 데이터를 가리키는 참조를 갖고 있으며, 해당 변수를 할당하거나 전달 할 때는 참조가 복사된다.
- class, array, interface, delegate, string 등
- 참조형 변수는 여러 변수가 동일한 데이터를 가리킬 수 있어 복잡한 객체와 메모리 사용에 대한 유연성을 제공함.
- 값형 변수는 값의 복사로 인한 성능상의 이점을 가지고 있음.
박싱과 언박싱(Boxing and Unboxing)
- 박싱은 값형을 참조형으로 변환하는 과정을 의미함. 값형 변수가 힙 메모리에 새로운 객체로 래핑되고, 해당 객체의 주소가 참조형 변수에 저장됨.
int value = 42; object boxedValue = value; // 값형을 박싱하여 object 형식으로 변환
- 언박싱은 참조형을 값형으로 변환하는 과정을 의미함. 박싱된 객체에서 실제 값을 추출하여 값형 변수에 할당하며, 이때 박싱된 객체의 형식이 반드시 일치해야 함.
object boxedValue = 42; int unboxedValue = (int)boxedValue; // 참조형을 언박싱하여 값형으로 변환
'C#' 카테고리의 다른 글
C# #17 TextRPG - 턴제 전투 (0) 2023.08.25 C# #16 델리게이트, 람다, LINQ, 고급 자료형 및 기능 (0) 2023.08.24 C# #14 블랙잭 (0) 2023.08.23 C# #13 알고리즘 기초 3 (0) 2023.08.23 C# #12 TextRPG 4 (0) 2023.08.22 다음글이 없습니다.이전글이 없습니다.댓글