본문 바로가기

전체 글

(23)
C#의 공변성, 반공변성 공변성과 반공변성은 제네릭을 이용하여 문제를 일반화할 때 반드시 고려해야 하는 요소이다.제네릭을 단지 사용할 뿐이면 신경 쓸 일이 없지만, 제네릭한 인터페이스 혹은 대리자를 만든다면, 그리고 그 인터페이스나 대리자가 범용적일수록 반드시 고려해야 한다.  공변성(Covariance) 및 반공변성(Contravariance)(C#)공변성(Covariance) 및 반공변성(Contravariance)과 이 기능이 할당 호환성에 미치는 영향에 대해 알아보세요. 이 둘의 차이점을 보여 주는 코드 예제를 확인하세요.learn.microsoft.com 공식 문서의 공변성 및 반공변성 설명이다. 공식 문서만큼 잘 설명해주는 곳이 없지만, 이 글에서는 약간의 부연설명을 덧붙이려고 한다.공변성과 반공변성을 사용하는 방법 ..
리스트에서 원소를 지우면서 지운 원소를 조작하는 코드 게임 개발을 하다 보면 리스트에서 원소를 지우면서, 동시에 리스트에서 방금 지워진 원소에 대해 어떤 조작을 해야 하는 패턴을 굉장히 흔하게 접하게 된다. 흔한 예를 들면 유닛이 사망하면 유닛을 리스트에서 지우면서 사망한 유닛의 사망 처리를 하는 패턴을 예로 들 수 있다.이런 경우 List.RemoveAll 을 어떻게든 쓰거나 루프를 여러번 도는 식으로 코딩하는 경우를 흔하게 볼 수 있다.   이런 경우에 가장 효율적인 코드는 이미 잘 알려져 있다.  for (var i = list.Count - 1; i >= 0; i--){ if (list[i].Removed) { list[i].OnRemove(); list[i] = list[^1]; list.Remove..
LINQ(2) - 일반적인 LINQ 코드 작성 원칙 및 유의점 LINQ에 대한 여러가지 LINQ는 워낙 거대한 기능이라 사용방법이 복잡하다. 이 글에서는 LINQ에 관련된 여러가지 잡다한 이야기와 LINQ 코드를 사용할 때 주의할 점들에 대해 서술한다. 또한 이 글은 유니티에서의 사용을 전제로 삼고 있다. LINQ는 SQL로 변환될 수 있는 쿼리 표현식으로 널리 사용되지만, 여기서는 고려하지 않는다. . LINQ 코드 작성 원칙 이 글에서 제안하는 LINQ 관련 코드 작성 원칙이다. 1. 쿼리 구문보다 메서드 구문을 사용한다. 쿼리 구문은 일반적인 C# 코드와 너무 이질적인 모양을 하고 있다. SQL보다는 C#에 익숙할 유니티 프로그래머들이 굳이 더 생소하게 보일 쿼리 구문을 사용할 필요가 없다. 유니티에서 실제 DB에 쿼리할 일이 없으니 더욱 그렇다. 또한 쿼리 ..