목록게임프로그래밍 (83)
bdfgdfg
Linq는 마치 SQL문법처럼 사용가능한 문법. 코드를 여러 단계에 걸쳐서 작성해야할 것을 한줄로 표현가능한 등 굉장히 편리한 이점이 있다. 최근에 List 컬렉션의 요소에 중복된 요소가 있고. 해당 각 중복된 요소의 수를 구해 중복된 수가 높은 요소를 N개만큼 뽑아와야 하는일이 존재했다. 물론 좀 더 처리해야 할 로직은 존재했지만 중요한건 이것이었음. 여기서 Groupby 문법(간단하게 그룹화,중복제거라고 보면된다)을 쓰면 깔끔하게 처리가 가능. class Program { static void Main(string[] args) { var lstOverlappedElementInList = new List() { 1, 1, 3, 3, 3, 5, 9, 9, 15, 15, 15, 15, 4, 4, 50,..
https://www.youtube.com/watch?v=yk-HD8YoyZg 좋은 내용이다..
C++에서는 포인터를 쓰면 간단하게 해결할 문제이지만 C#은 버퍼의 인덱스부터 ~ 어느 인덱스까지를 사용하는건 어렵다. 이때 사용할 수 있는게 ArraySegment. 네트워크 송수신에서 데이터를 주고 받기 위해 정의된 패킷타입이 다음과 같다고 보자. // [패킷 프로토콜][패킷 길이][데이터 필드] // [2byte(Protocol)][2byte(Length)][N-byte(Data Field)] 해당 데이터를 해석하기 위한 별도의 클래스나 툴이없다면 직접 부분참조해서 읽어와야 한다. class Program { static void Main(string[] args) { ArraySegment packetBuffer = new ArraySegment(new byte[1024], 0, 1024); in..
프로그램이 어떠한 문제로 인해 프로그래머의 의도대로 흘러가지 않는 사건을 예외. 이러한 예외를 오류로 이어지지 않도록 적절하게 처리하는 것을 예외 처리(Exception Handling)이라 한다. 간단하게, 크기가 3인 배열을 할당하고, 할당된 메모리의 크기를 넘어서서 접근하는 코드를 만들어보자. -> 버퍼 오버플로우 인덱스가 배열의 범위를 벗어나 에러가 발생. 심지어 실행을 해보면 CLR이 직접 에러 메시지를 로그로 남겨준다. 이렇게 잘못된 인덱스를 통해 배열의 요소에 접근하려 들면 배열 객체가 이 문제에 대한 상세정보를 IndexOutOfRangeException의 객체에 담은 후 Main메소드에 던지고, Main메소드는 이 예외를 처리할 방도가 없기에 다시 CLR에게 던진다. -> CLR에게까지 ..