ved_Rony
article thumbnail
C# - 프로퍼티(Property)
Programming/C# 2022. 7. 24. 15:55

-왜 쓰는가? 프로퍼티는 속성이라는 의미가 있다. 이 프로퍼티를 사용하여 필드의 은닉성, 편의성을 고려하여 만들수있게 해주는 편의한 기능이다. 처음에는 솔직히 왜 쓰는지 이해가 가지 않았다. 그냥 다른 곳에서 쓰게 되면 public으로 클래스 내부에서만 쓰게 되면 private으로 쓰면 되지 않나 싶었다. 그래서 검색으로 해보니 코드가 길어지고 복잡 해질수록 데이터를 누가 어디서 가공하게 되는지 애매 해지고, 중요한 데이터일 경우 데이터가 원하는 방향이 아닌 식으로 변환 될수도 있다고 한다. 이를 방지 하기 위해서 은닉성을 추구하고, 어디서 데이터가 바뀐는 지 보기 쉽게 하기 위해, 프로퍼티를 사용한다고 한다. 또한, 데이터가 set, get이 불러올때 메소드를 정의하여 가공할수 있으니, 편리하다. 쉽게..

article thumbnail
C#- 비동기 프로그래밍(2) with 예제
Programming/C# 2022. 6. 12. 18:27

비동기 프로그래밍에 대해서 지난글에서 개념적으로 다뤄봤으나, 아직 어떻게 써야할진 애매하다. 유니티에서 예제와 함께 비동기에 대해 더 이해해보려고 한다. 예제로 아침식사를 만든다고 가정해보자. 아침으로 베이컨을 굽고 커피를 따르고 등 먹을게 많다. 할게 많으니 비동기로 아침을 차려서 효율적으로 일처리를 해보자. -예제를 위한 빈 클래스들 -아침 식사를 위한 메소드들 -비동기를 실행 바로 var eggsTask = await FryEggsAsync();해도 되지만, 이 예제를 만든 사람은 실행부분과 끝나는 시점을 구분하기 위해서 나누기 위해서 위와 같이 짠거라 생각한다.(개인 적인 추측) await로 테스트가 끝난 시점을 체크 끝났으면 다음으로 넘어간다. -이렇게 태스크가 여러개일때, 태스크를 리스트로 담..

article thumbnail
C# - 비동기 프로그래밍_asynchronous programming
Programming/C# 2022. 5. 28. 19:30

비동기 프로그래밍이란? CPU를 더욱 효율적으로 사용하기 위한 기술이다. 중앙처리장치는 많은 작업을 요청받고 처리한다. 네트워크 통신을 주고 받거나, 데이터를 읽고 쓰는 등 많은 작업을 매초마다 처리하게 되는데, 이를 현재 입출력 작업이 완료되길 기다리게 하는것은 비효율적이다. 이를 해결하기 위해 비동기 프로그래밍을 사용하며, 입출력을 기다리는 대신, 다른 업무를 처리하게 하며 입출력 작업이 완료되었다는 메세지를 받은뒤 기존 작업을 이어나가는 프로그래밍이다. 그러니, 우리가 비동기 프로그래밍을 사용할때, 쉽게 말해 오래 걸릴것 같은 함수들에 대해서는 비동기로 돌리자는 것이다. 오래 실행되는 함수를 그냥 동기적으로 작성하고, 필요하면 새 스레드나 작업 객체에서 그런 함수를 호출함으로써 동시성을 도입하는 전..

article thumbnail
C# - 구조체(struct)
Programming/C# 2022. 5. 23. 19:48

프로그래밍에는 두가지의 변수 타입이 있다. 값 타입, 참조 타입 -값타입이란? 스택영역에 저장되며, Object를 상속 받는 구조체이다. Object -> ValueType -> (값에 따라 다른 구조) 예)int32 데이터에 직접 값이 저장된다. -참조타입이란? 힙에 저장되고, Object를 상속받고, 해당데이터의 참조 값이 저장된다. 처음 변수를 선언하면 값타입과 달리 메모리를 생성하지 않는다. 값타입을 참조타입 처럼 감싸주는것을 박싱이라고 한다. 스택에 있는 데이터를 힙으로 복사 해오는데, 이과정에서 리소스를 많이 잡아먹는다. int i = 1; object x = i; 이런식.. 이에반해, 언박싱은 박싱과 완전히 반대개념이다. 힙에 있던데이터를 스택으로 복사해오는과정이다. 주의) 선언할 때 is ..

article thumbnail
C# - 델리게이트와 이벤트/ Delegate & Event
Programming/C# 2022. 5. 14. 17:01

델리게이트란? 함수 대행자이다. 어떤 함수들을 델리게이트에 추가 해놓는다면, 그함수들을 실행시켜준다. 델리게이트 선언 -> 델리게이트 추가+=들어갈 함수 -> 델리게이트 실행 이런한 델리게이트로 클래스간의 커플링을 방지 할수 있다 이벤트 사용하지 않는 경우 A라는 함수를 실행시키면 B 함수를 실행 시킬려고 한다. 그렇다면, A를 가지고 있는 클래스는 B에 대해 알고 있어야한다. 즉, A의 클래스에 public X x;으로 선언후, x.B(필요한 매개변수)식으로 사용해야한다. 이벤트를 사용하면 이런 경우를 피할수 있다. 이벤트를 사용 선언 public delegate void [델리게이트 이름](메소드에 들어갈 매개변수) public event [델리게이트][이벤트 이름] 메소드 추가 [이벤트이름](pub..

검색 태그