본문 바로가기
반응형

전체 글608

C# Equals()과 GetHashCode()를 함께 재정의 해야하는 이유 우리가 맞이하는 상황 프로그래밍을 하다보면 하나 이상의 필드를 Key값으로 설정하여 비교하게 되는 경우가 생기게 됩니다. 그리고 평소처럼 분명 같은 키값을 가진 객체를 ContainsKey() 함수로 비교하면 일치하지 않는다고 나올겁니다. hash 값을 사용하는 Collection(HashTable, Dictionary, ConcurrentDictionary)에서 ContainsKey로 실행하면 우선 GetHashCode() 메서드를 비교하고 그 다음에 Equals() 메서드를 실행합니다. 아무리 Equals() 메서드를 열심히 변경해도 그 앞쪽에서 비교가 일어나서 메서드가 실행되지 않습니다. 이 문제를 해결하기 위하여 하나 이상의 필드를 Key값으로 비교하기 위해서는 해당 클래스의 Equals 함수와 .. 2023. 3. 23.
내가 게임을 하지 않게 된 이유 요즘 디아블로4가 출시를 앞두고 있어서 그런지 커뮤니티에서 디아블로4 관련 글들이 올라오고 있다. 아마 많은 사람들이 디아블로2의 추억과 디아블로3의 아쉬움을 가지고 사전 구매를 진행했을 것이다. 그리고 출시 당일이 되면 디아블로4 서버는 터지고 사람들은 밤을 지새우며 게임에 입장하기 위해서 시간을 쓸 것이다. 그리고 내 예상으로는 디아블로4는 한국에서 성공할 거 같고 입소문을 타면서 관심 없던 사람들도 덩달아 몰려들 것이다. 하지만 정말 게임을 좋아하는 사람이 아니라면 얼마나 그게 얼마나 가겠는가? 길어야 한 달이다. 대부분은 10만 원짜리 인스턴스로 게임 가볍게 즐기고 떠날 것이다. 이게 자본주의라는 걸 알면서도 이 가벼움은 나를 지치게 만든다. 나는 최근까지도 게임에 꽤 많은 시간을 소비하고 있었다.. 2023. 3. 21.
C# 괄호 알아보기 괄호 종류 한글 명칭영어 명칭()소괄호Round Brackets 또는 Parentheses[]대괄호Square Brackets 또는 Brackets{}중괄호Curly Brackets 또는 Braces홑화살괄호Angle Brackets 또는 Chevrons복합문에서의 중괄호 배치 (들여쓰기 스타일)중괄호는 사이에 문장이 입력되기 때문에 간격이 많이 벌어지게 된다. 그래서 이에 따른 많은 코딩 스타일이 존재하게 된다. 개인적으로는 Allman 스타일을 선호한다.중괄호 배치스타일while (x == y) {     something();     somethingelse(); }Allmanwhile (x == y) {     something();     somethingelse(); }K&Rwhile (x =.. 2023. 3. 20.
C# 람다(Lambda)에 대해서 람다(Lambda)란? 람다는 무명 메서드(annoymous method)와 비슷하게 무명 함수를 정의하기 위해서 사용된다. 람다는 두 가지 형태 중 하나의 형태를 가진다. 람다식 (Lambda Expression) (parameters) => expression // 람다식으로 작성시 return 문을 생략할 수 있습니다. 람다문 (Lambda Statement) (parameters) => { statements; } // 람다문으로 작성시에는 return 문을 생략할 수 없습니다. => 는 람다 연산자라고 불립니다. Func lambda = parameter => expression; 파라미터가 하나라면 () 괄호를 생략할 수 있습니다. (p1, p2, p3) => expression; 파라미터가 .. 2023. 3. 20.
C# 네이밍 규칙에 대해서 네이밍 종류 카멜 케이스 (Camel case) camelCase 파스칼 케이스 (Pascal case) PascalCase class, record, struct의 이름을 명명할 때 사용된다. 케밥 케이스 (Kebab case) kebab-case 스네이크 케이스 (Snake case) snake_case 정리 보통 코딩 컨벤션에 명시되기 때문에 알아두면 도움이 된다. C# 코딩 규칙 | 마이크로소프트 런 (microsoft.com) 지금 프로젝트의 명명법이 일관되게 적용되고 있는지 생각해보자. 아니면 미래에 프로젝트 시작 시에 어떤 명명법을 사용할지도 생각해 보자 2023. 3. 15.
C# Ceiling(), Floor(), Round(), Truncate() 올림 내림 반올림 버림 어림 함수들 올림, 내림, 반올림, 버림 등등 매번 볼때마다 헷갈린다. 이번 기회에 정리해봤습니다. 함수명 기능 설명 Ceiling() 올림 + 양의 방향으로 올린다. Ceiling(1.2); // 2 Ceiling(-1.7); // -1 Floor() 내림 - 음의 방향으로 내린다. Floor(1.2); // 1 Floor(-1.7); // -2 Round() 반올림 0,1,2,3,4 버림 5,6,7,8,9 올림 Round(1.2); // 1 Round(-1.7); // -2 Truncate() 버림 무조건 버림 Truncate(1.2); // 1 Truncate(-1.7); // -1 정리해봤는데 여전히 헷갈립니다만 여러번 반복해서 보는 것이 중요할 거같습니다. 2023. 3. 14.