본문 바로가기
728x90
반응형

분류 전체보기274

C#] Properties vs Fields 차이점 Field란? class나 struct 바로 아래에 선언된 변수이다. public, private, protected, internal, protected internal, private protected가 될 수 있다. private int _age; private 이기 때문에, class 내부에서만 접근할 수 있다. fields는 일반적으로 backing store, backing field 용도로 사용한다. field를 private로 선언하고 public property로 접근해서 사용한다. public int Age { get { return _age; } set { _age = value; } } Person class의 생성에 따른 실행을 살펴보자. public class Person { p.. 2024. 2. 15.
C#] Optional Parameters Optional Parameters이란? 함수 호출 시, parameter를 선택적으로 포함할 수 있다. 피자의 추가토핑 처럼, 원하면 추가하고 없어도 괜찮다. public void OrderPizza(string size, string extraTopping = "") { ... } 위 코드에서 extraTopping이 선택적 파라미터이다. OrderPizza 호출 시, extraTopping을 포함하거나 아니면 size만 전달해도 된다. Optional parameters는 코드에 확정성과 단순함을 가져온다. method overloads를 줄여준다. 하나의 함수가 여러 다른 일을 할 수 있다. 가독성을 늘린다. method versions 사이를 왔다갔다 할 필요가 없다. flixible API를 .. 2024. 2. 14.
C#] IDisposal Interface 구현 방법 IDisposal interface는 관리코드에 리소스 정리 툴을 제공한다. IDisposal을 구현하므로, object에 의해 할당된 관리하지 않는 리소스를 release할 수 있다. IDisposable interface의 사용목적 주로 리소스를 시기적절하게 release하는데 사용된다. .NET Garbage Collector는 사용하지 않는 변수를 예상치 못하게 releasing처리 하므로 메모리를 잘 관리한다. GC가 메모리 정리를 하기 전에 메모리가 부족할 수 있다. 따라서 수동으로 메모리 정리 처리를 해줘야 한다. 이러한 리소스는 주로 파일처리, DB, 네트워크 작업과 관련되어 있다. 리소스 부족으로 성능 이슈가 생기지 않도록, 리소스를 release시켜야 한다. IDisposable 기본 .. 2024. 2. 14.
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.
728x90
반응형