C#

    객체지향의 5대 원칙 SOLID : Single Responsibility Principle

    객체지향 프로그래밍에서 효율적이고 확장성 있는 코드를 작성하려면 SOLID 원칙을 지켜야 합니다. SOLID 원칙은 객체지향의 5대 원칙으로 Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle을 의미합니다. 이번 글에서는 SOLID 원칙 중 하나인 SRP(Single Responsibility Principle)에 대해 자세히 살펴보겠습니다. SRP(Single Responsibility Principle) SRP(Single Responsibility Principle)는 단일 책임 원칙..

    C# : System.String

    C#의 클래스 중 하나인 string은 문자열을 저장하고 다양한 작업을 수행할 수 있는 유용한 클래스입니다. 이번 블로그에서는 string 클래스에서 자주 쓰이는 메서드들을 자세하게 설명하겠습니다. Length 문자열의 길이를 반환합니다. string str = "hello"; int length = str.Length; // 5 IndexOf 지정된 문자열의 인덱스를 반환합니다. 만약 문자열이 없다면 -1을 반환합니다. string str = "hello world"; int index = str.IndexOf("world"); // 6 Substring 문자열의 일부분을 반환합니다. string str = "hello world"; string subStr = str.Substring(0, 5); /..

    C# : Refactoring

    C# 스크립트를 작성하는 경우, 코드의 품질을 높이기 위해 리팩토링이 필요할 수 있습니다. 리팩토링이란 기능을 변경하지 않고 코드의 구조를 개선하는 것을 말합니다. 이번 글에서는 C# 스크립트 리팩토링하는 방법을 자세하게 설명하겠습니다. 1. 코드 분석 리팩토링을 시작하기 전에, 코드를 분석하여 어떤 부분을 개선해야 하는지 파악해야 합니다. 코드 분석을 통해 다음과 같은 부분을 파악할 수 있습니다. 코드 중복 긴 메서드나 함수 복잡한 조건문 중첩된 반복문 사용하지 않는 변수나 메서드 2. 코드 중복 제거 코드중복은 코드의 유지보수를 어렵게 만듭니다. 따라서 코드 중복을 최대한 제거하는 것이 좋습니다. 코드 중복을 제거하는 방법은 다음과 같습니다. 메서드 추출 상속 관계 설정 중복 코드를 담당하는 클래스 ..

    C# 추상 클래스란?

    C# 추상 클래스는 인스턴스를 만들 수 없는 클래스입니다. 즉, 추상 클래스는 미완성된 클래스이며, 상속을 통해 완성해야 합니다. 추상 클래스는 abstract 키워드를 사용하여 정의합니다. 추상 클래스를 정의할 때, 다음과 같은 특징을 가집니다. 추상 클래스는 인스턴스를 만들 수 없습니다. 추상 클래스는 완성되지 않은 클래스이므로, 상속을 통해 완성되어야 합니다. 추상 클래스는 추상 메서드를 포함할 수 있습니다. 추상 클래스 사용 방법 추상 클래스를 사용하는 방법은 다음과 같습니다. 추상 클래스를 정의합니다. public abstract class MyAbstractClass { public abstract void MyAbstractMethod(); } 추상 클래스를 상속하는 클래스를 정의합니다. p..

    C# : LINQ

    LINQ란? LINQ(Language-INtegrated Query)의 약자인 LINQ는 C#에서 데이터 질의(Query) 기능을 사용할 수 있는 기술입니다. C#의 배열, 컬렉션, XML, DataSet 등에서 내가 원하는 데이터만 가져오고 싶은 경우 사용할 수 있는 기술입니다. LINQ의 장단점을 알아보기 전에 LINQ가 무엇인지 다음 예제를 통해 간략하게 알아봅시다. 다음 예제는 배열에서 대문자 "A"로 시작하고 문자열의 길이가 3보다 큰 문자열을 LINQ로 추출한 뒤 콘솔에 출력합니다. class Program { static void Main(string[] args) { string[] fruits = { "apple", "banana", "cherry", "date", "elderberry"..

    Collection was modified: enumeration operation may not execute

    C#에서 Collection was modified: enumeration operation may not execute 이 에러는 컬렉션을 열거하고 있을 때, 컬렉션을 수정하려고 할 때 발생하는 에러입니다. 이 에러는 foreach 루프를 사용할 때 주로 발생하는데, foreach 루프를 사용하면 컬렉션의 요소를 읽기만 할 수 있습니다. 따라서 컬렉션을 수정하려고 하면, 이 에러가 발생합니다. 이 에러를 해결하는 방법 1. for 루프 사용 foreach 루프 대신 for 루프를 사용하면, 컬렉션을 수정할 수 있습니다. List numbers = new List() { 1, 2, 3, 4, 5 }; for (int i = 0; i < numbers.Count; i++) { if (numbers[i] =..

    C# 프로퍼티

    C#에서 프로퍼티는 클래스의 데이터 멤버를 캡슐화하는 데 사용됩니다. 데이터 멤버는 클래스 외부에서 직접 액세스할 수 없으며, 프로퍼티를 통해 간접적으로 액세스할 수 있습니다. 이번 글에서는 C# 프로퍼티를 자세히 살펴보겠습니다. 프로퍼티란? 프로퍼티는 클래스의 데이터 멤버를 캡슐화하는 데 사용됩니다. 데이터 멤버에 직접 액세스할 수 없으며, 프로퍼티를 통해 간접적으로 액세스할 수 있습니다. 프로퍼티는 get 및 set 접근자를 사용하여 구현됩니다. 프로퍼티의 예 다음은 프로퍼티의 간단한 예입니다. public class Person { private string name; public string Name { get { return name; } set { name = value; } } } 위의 예제..

    C# 반복문 : while

    C#에서 while문과 do while문은 루프(loop)를 제어하는 제어문(conditional statement)입니다. 이 둘은 기본적인 구조는 비슷하지만, 실행 순서에 차이가 있습니다. while문 while문은 조건이 참(true)인 경우에만 루프를 실행합니다. while문의 구조는 다음과 같습니다. while (condition) { // 실행 코드 } 위 코드에서 condition은 루프를 실행할 때 평가할 조건입니다. condition이 참(true)일 경우, 중괄호({}) 안의 코드가 실행됩니다. 루프가 실행된 후, 다시 condition을 평가하고, condition이 참(true)일 경우 다시 루프를 실행합니다. 이 과정이 condition이 거짓(false)일 때까지 반복됩니다. d..