![[C#] 강력한 데이터 작업 Linq(링큐)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoPaBR%2FbtsvlAwZCfZ%2FVA94Vnlkc48AYGAceACKf0%2Fimg.png)
공부하면서 처음에는 아무것도 모르고 넘겼던.. 링큐.. 만들다보면 링큐는 작업을 간단하고 쉽게 도와준다. 최대값이나 정렬을 할때 가끔 사용했었는데, 이제서야 책을보고 조금 공부해 보았다. 링큐 링큐는 Language Intergrated Query의 약어로 , C# 언어에 통합된 데이터 질의 기능을 말한다. 질의라는 것이 좀 어색하긴한데, 데이터에 대해 물어본다는 뜻이다. 링큐의 기본적인 3가지 키워드를 소개한다. - From : 어떤 데이터 집합에서 데이터를 찾을 것인가? - Where : 어떤 조건의 데이터를 찾을 것인가? - Select : 어떤 값을 추출 할 것인가? 이정도로 생각하면 좋을 것 같다. 바로 예시를 들어보자. 별점 3점 이상의 영상만 가져오는 법 나는 여러개의 영화 데이터 중에 별점..
![[C#] 여러개의 Enum - [Flags] Attribute](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLsb62%2FbtsvlzSoTG6%2Fbo5IFIocgY6GbvRd3NUNX1%2Fimg.png)
우리는 Enum 타입으로 여러가지 상태나 상황을 정할 수 있다. Enum을 조금 더 효과적으로 사용하기 위한 Flags 애트리뷰트를 공부해봤다. Flags Flags는 Enum타입에 사용되는 애트리뷰트이고, 열거형 멤버들이 비트 플래그로 사용될 수 있음을 나타낸다. 메모리가 중요했던 옛날에는 기껏해야 10개도 안되는 상태를 표현하려고 한 바이트(2^8 = 0~255)를 사용한다는게 낭비라고 생각이 됐을 수도 있다. 물론 지금은 메모리가 풍족해진 상황이지만, 비트 플래그가 갖는 장점도 있기 때문에 C#에서도 사용이 가능하게끔 구현을 해둔 것 같다. 선언 Enum 상단에 [Flags]라는 애트리뷰트를 선언해주면 된다. 그리고 Enum의 멤버들은 10진수로 적어줘도 상관없지만, 2의 제곱수로 적어주어야 한다...

델리게이트 델리게이트는 명사로는 대표(자), 동사로는 위임하다.. 라는 뜻을 가지고 있다. 함수나 메서드의 기능을 변수에 담아놓고 어디서 호출하더라도 그 기능을 대신 실행시켜 준다. 처음 배울때 어려운 개념중에 하나고, 완벽하게 쓰려면 한참은 더 공부해야 할 것 같다. 예시 - 우리는 성인 영화를 보여주는 스트리밍 사이트를 만들었습니다. - 시청자의 나이를 받아서 성인이면 영화를 보여주고, 아니면 재생을 시키면 안됩니다. public static void ShowAudltMovie(int age) { if(age >= 20) { Console.WriteLine("영화 재생"); } else { Console.WriteLine("영화 재생 불가"); } } 간단하게 성인인지를 판별하여 영화를 보여주는 코드..
![[C#] re-throw? 그리고 throw vs throw EX](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZlWrS%2FbtrMqtVtwOq%2FZY5N2OrWVK1Kxy8Z0RHJOK%2Fimg.png)
Rethrow? try - catch 를 책으로 공부하고 이런저런 예제 코드들을 보면서 try절의 코드블록 안에서 throw new Exception 을 하는것이 아닌 , catch 안에서 throw를 하는 코드들을 봤었다. try { //실행할 코드 } catch { throw; } catch(Exception ex) { throw ex; } rethrow라는 문법은 따로 없지만 , 예외를 catch에서 잡아서 다시 던지는것을 rethrow라고 부르는것 같았다. 우리가 유니티에서 오류를 내서 그 오류를 눌러본다면, 아래의 사진처럼 친절하게도 어디서 부터 오류가 난건지 알려준다. 만약 오류를 낸 코드를 달랑 한줄만 알려준다면, 열결되어있는 수많은 코드들을 추적하기 어렵기때문에 이 오류의 근원지가 어디인지..
![[C#] 예외처리 Try - Catch / Throw & Finally](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLHo1s%2FbtrMmgCyDyG%2FJBsHkExdBYAXtKNeEVnkRk%2Fimg.png)
일들이 계획한대로 흘러가지않아 다른 계획들을 실행하지 못했다. 하지만 그래도 공부는 꾸준히 해줘야 하기에 오랜만에 예외처리에 대해 공부를 해봤다. 포트폴리오를 만들면서 try - catch를 쓴적은 없지만 다이렉트x를 살짝 배울때 C++에서 사용했었다. 오류가 나더라도 프로그램이 멈추지 않고 실행하게끔 만든다던지, 상황에 맞게 설정해둔 오류들을 로그로 찍어 어떤 문제가 있는지 파악해서 해결한다던지 쓰일 부분은 정말 많아보였다. Try - Catch 너무 쉬운 영어 단어지만 얘기해보자면 시도하다 - 잡다 라는 뜻을 가지고 있다. 시도를 해서 예외를 던지면 그 예외를 잡아서 처리하는 단순한? 방식이라고 생각이 든다. 사용할때는 아래와 같이 써주면 된다. try { //실행 하려는 코드 } catch(예외) ..
![[C#] 프로퍼티란? & 자동구현 프로퍼티와 public 변수와의 차이 찾아보기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqxEA3%2FbtrKwWrlV99%2FSUfKsQdwKIVLBrcIwwYBy1%2Fimg.png)
프로퍼티 사용법을 조금씩 알게되면서 정말 유용하게 사용했던게 프로퍼티였다. 프로퍼티에 대한 이해를 위해 공부한 내용을 정리해봤다. 객체지향 프로그래밍에서는 은닉성을 지키기위해 감춰둔 필드에 접근하기위한 메소드를 만들어 쓴다고한다. 예는 아래 코드와 같다. private int A; public int Get_A() { return A; } public void Set_A(int Value) { A = Value; } 위의 코드는 간단한 예시지만, 다르게 짠다면 바로 필드에 접근하는 것이 아니라 메소드를 통해 다른 안전장치를 걸어 줄수도 있다. 즉 , Class를 설계한 사람의 의도에 맞게 메소드를 통해서만 필드에 접근하도록 한다. 하지만 은닉해야 하는 변수가 한두개가 아니라면 저 메소드들을 하나하나 만들..