본문 바로가기
728x90
반응형

전체 글295

C#] Managed vs Unmanaged Code 관리, 비관리 코드는 메모리 관리를 다루는 방식이 다른 2가지 종류이다. 차이점과 garbage collection에 대해 살펴보자. 관리코드란? 관리코드란 런타임 환경에서 자동으로 메모리 관리(garbage collection, GC)를 제공하는 코드이다. GC는 런타임 환경에서 자동으로 메모리 관리를 하는 프로세스이다. 메모리 할당과 해제에 대한 걱정없이 코드를 작성할 수 있도록 해준다. public class ManagedMemoryManager { private readonly List _numbers; public ManagedMemoryManager() { _numbers = new List(); } public void AllocateMemory() { for (var i = 0; i < 1.. 2024. 2. 14.
C#] SOLID 원칙 5. Dependency Inversion Principle(의존성 역전 원칙) Dependency Inversion Principle의 기본 아이디어는 lower-level 모듈의 변경에 의해 영향이 없고 재사용성이 있는 higher-level modules를 만들어야 한다는 것이다. High-level 모듈은 low-level 모듈에 의존하지 않는다. 둘다 abstractions에 의존한다. Abstractions은 상세기능에 의존하지 않는다. 상세기능은 abstractions에 의존한다. 이해하기 위해, 다음 예를 살펴보자. High-Level, Low-Level 모듈이란 high-level 모듈의 기능은 추상적이며, 복잡한 로직을 가지고 있다. low-leve 모듈은 application의 작은 파트와 상세내용에 집중한다. high-level 모듈안에서 사용된다. Depend.. 2024. 2. 7.
C#] SOLID 원칙 4. Interface Segregation Principle(인터페이스 분리 원칙) 어떠한 고객에게도 사용하지 않는 함수에 의존하기를 강요할 수 없다. 기본적으로 ISP는 최소한의 필요한 구현만 하도록 코드작성을 줄여준다. 따라서 interfaces는 오직 필요한 declarations만 갖도록 만들어야 한다. 다른 declarations을 가지고 있는 interface는 더 작은 interfaces로 분리되어야 한다. Example 우리가 운전하기도 하고, 날수도 있는 탈것이 있다. public interface IVehicle { void Drive(); void Fly(); } 여러 기능이 있는 차를 개발하려고 한다. IVehicle 인터페이스를 사용하기 좋다. public class MultiFunctionalCar : IVehicle { public void Drive() { .. 2024. 2. 7.
C#] Access Modifiers Access modifiers는 C# project에서 object와 object의 members의 접근성을 명시한다. encapsulation을 강화하고, 의도하지 않은 접근이나 변경으로부터 보호한다. 모든 C# types는 access modifiers를 갖는다. 명시되지 않은 경우 기본 access modifier가 지원된다. Access Modifiers Types private, public, protected, internal, 그리고 protected-internal, private-protected 와 같은 두 가지 조합이 있다. 각 access modifiers는 다른 수준의 접근성과 가시성을 제공하며, 우리는 이를 사용하여 object의 동작을 제어할 수 있다. Private Acces.. 2024. 2. 2.
C#] Virtual VS Abstract 함수 차이점 OOP는 상속을 사용한다. 효율적이고 정돈되 코드를 위해 class의 공통 함수를 사용한다. 함수에 대해서 C#은 두가지 별도의 접근방식을 사용한다. virual 과 abstract methods이다. 둘다 polymorphism이 가능하지만, 구현과 사용방법은 상당히 다르다. Virtual vs. Abstract 대중교통 사무실을 만들어보자. 사용자는 Car, Train, Plane 중에 선택할 수 있고 이동시간과 기본요금을 알 수 있다. 사용자의 옵션에 따라 대중교통 object를 초기화하는 CreateTransportMode() 함수를 갖는 TransportAgency class를 만들어보자. public enum TransportModeType { Car, Plane, Train } interna.. 2024. 2. 2.
C#] Value VS Reference Types C# data types 분류에 대해 살펴보자. value types과 reference types의 차이점도 살펴보자. C#은 strongly-typed 언어이다. 각 변수가 특정 type을 갖고 있고, 각 type은 value type 또는 reference type이 될 수 있다. Value Types 값 타입 변수는 데이터를 직접적으로 갖고 있고, System.ValueType으로부터 상속받은 struct keyword를 사용하여 지정된다. Numeric types bool, char types Date types 내장 값 타입을 제외하고, struct keyword를 사용해서 custom 값 타입을 정의할 수 있다. fields 또는 properties로 값 타입 또는 참조 타입을 가질 수 있다.. 2024. 2. 1.
728x90
반응형