공부/C# 5

[C#] EventHandler 예제 <ThunderboltEvent>

지난 글에서 EventHandler에 대해 알아본 적이 있었다. - 2023.11.16 - [C#] - [C#] EventHandler 그러나 이 EventHandler에서 말하는 Event가 무엇인지, 실제 사용은 어떤 식으로 해야하는지 감이 잘 오지 않아 재미있는 예제를 제작해보며 EventHandler에 대한 사용법을 익힐 수 있었다. 실제 코드를 github에 올려두었으니 실제 코드가 보고싶다면 아래의 주소로 가면 된다. GitHub 주소 : https://github.com/ChoiMingyeong/ThunderboltEvent.git 기본 골자는 다음과 같다. ThunderboltEvent(이하 천둥벼락이라고 칭함)가 발생하였을 때 각 개체별로 발생될 상황들을 자동으로 실행하게 하는 것이다. ..

공부/C# 2023.11.17

[C#] EventHandler

EventHandler란? 관찰자 디자인 패턴(Observer Pattern) 개체에서 작업 실행을 알리기 위해 보내는 메세지 public event EventHandler MyEventHandler; 개발자가 정의한 어떠한 일의 발생 순간에 (이벤트 발생) 처리하고 싶은 작업이 있는 각 개체들의 처리법을 미리 등록해두고, 이벤트 발생시 미리 등록한 함수들을 순차적으로 실행되도록 해주는 대리자 모델이다. 일반적으로 이벤트 핸들러에 등록하는 함수는 다음과 같은 형식으로 설계한다. void OnEventFunc(object sender, EventArgs s) { //... } 직접적으로 함수의 형태를 정하여 초기화시켜주고 싶은 경우에는 다음과 같은 대리자를 선언하는 방법을 사용할 수 있다. public d..

공부/C# 2023.11.16

[C#] GetHashCode()

HashCode란? 객체의 HashCode란, 객체를 식별하는 객체 고유의 하나의 정수 값을 의미한다. GetHashCode() 함수는 객체의 HashCode값을 계산하여 가져오는 함수로, 해시값은 기본적으로 객체의 일생동안 바뀌지 않는다. 기본 메서드는 object의 GetHashCode()를 사용하나, 클래스나 자료구조별로 재정의가 되어있을 수 있다. object의 기본 해시 메소드는 RuntimeHelpers.GetHashCode()를 사용하여 해시값을 얻어온다. int num = 10; var numHash1 = num.GetHashCode(); var numHash2 = num.GetHashCode(); object obj = new object(); var objHash1 = obj.GetHa..

공부/C# 2023.11.10

[C#] Unix Timestamp

Unix Timestamp란? 유닉스 타임스탬프(Unix Timestamp)란, 1970년 1월 1일 00:00:00 (UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 값이다. 이 값은 윤초를 무시하며, POSIX 시간이나 Epoch 시간이라고 부르기도 한다. 32비트 정수형을 쓰고 있었으므로 2038년 1월 19일 3시 14분 07초가 지나는 순간 오버플로로 인해서 더 이상 값을 정상적으로 나타낼 수 없는 문제가 존재한다. 이 문제를 Y2K38 문제라고 한다. unsigned 형으로 전환하면 2106년까지 늦출 수 있지만 음수형을 표현할 수 없으므로 1970년 이전의 시간을 나타낼 수 없는 문제가 존재하고, 64비트 int형으로 바꾸게 되면 2922,7702,6596년까지 표현할 수 있어 사실..

공부/C# 2023.11.06

[C#] Enum.IsDefined

Enum값에 특정한 값이 존재하는 지 여부를 구하는 함수이다. 검증할 때 사용한다. Cast를 위해서라면 Enum.TryParse를 사용하자. 오버로드 public static bool IsDefined(Type, Object) 지정된 정수 값 또는 문자열로 해당 이름이 지정된 열거형에 있는지 여부를 나타내는 부울을 반환 public static bool IsDefined(TEnum) 지정된 정수 값 또는 문자열로의 해당 이름이 지정된 열거형에 있는지 여부를 나타내는 부울을 반환 public enum Result { Success = 0, Error = 1, } public class Example { public static void Main() { #region IsDefined(Type, Objec..

공부/C# 2023.11.04