C#

    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..

    C# 비트연산

    C#에서 비트연산은 비트 단위로 데이터를 처리하는 방법입니다. 이번 글에서는 C#에서 사용되는 비트연산에 대해 자세히 살펴보겠습니다. 비트연산이란? 비트연산은 데이터를 비트 단위로 처리하는 연산입니다. 비트연산은 논리 연산과 쉬프트 연산으로 나뉩니다. 논리 연산 논리 연산은 AND(&), OR(|), XOR(^), NOT(~) 연산자를 사용하여 수행됩니다. 이 연산자들은 비트 단위로 논리 연산을 수행합니다. 쉬프트 연산 쉬프트 연산은 비트를 좌측 또는 우측으로 이동시키는 연산입니다. 좌측 시프트() 연산자를 사용하여 수행됩니다. 비트연산의 예 다음은 비트연산의 간단한 예입니다. 논리 연산 byte a = 0b00000101; byte b = 0b00000011; byte result1 = (byte)(a..

    C# 상속성과 은닉성

    C#에서 상속성과 은닉성은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 이번 글에서는 상속성과 은닉성에 대해 자세히 살펴보겠습니다. 상속성이란? 상속성은 객체 지향 프로그래밍에서 기존 클래스를 확장하여 새로운 클래스를 만들 수 있는 개념입니다. 상속성을 사용하면 기존 클래스의 속성과 메서드를 새로운 클래스에서 재사용할 수 있습니다. 이로 인해 코드의 재사용성이 높아지고 유지 보수성이 향상됩니다. 상속성의 예 다음은 상속성의 간단한 예입니다. public class Animal { public void Move() { Console.WriteLine("Animal is moving"); } } public class Dog : Animal { public void Bark() { Console.Wri..

    C# 생성자와 static

    C#에서 생성자와 static은 객체 지향 프로그래밍에서 매우 중요한 개념입니다. 이번 글에서는 C#에서 생성자와 static에 대해 자세히 살펴보겠습니다. 생성자란? 생성자는 클래스의 인스턴스를 초기화하는 데 사용됩니다. 생성자는 클래스와 동일한 이름을 가지며, 클래스가 인스턴스화될 때 자동으로 호출됩니다. 생성자는 매개 변수를 사용하여 클래스의 인스턴스를 초기화할 수 있습니다. 생성자의 예 다음은 생성자의 예입니다. public class Person { public string Name { get; set; } public int Age { get; set; } public Person(string name, int age) { Name = name; Age = age; } } 위의 예제에서 Per..

    C# 객체 지향 프로그래밍의 특징

    C#은 객체 지향 프로그래밍의 모든 특징을 지원합니다. 이에는 캡슐화, 상속, 다형성, 추상화 등이 포함됩니다. 캡슐화 캡슐화는 클래스와 객체를 설계하는 데 중요한 개념 중 하나입니다. 캡슐화는 데이터와 메서드를 하나의 단위로 묶어서 내부 세부 정보를 숨기는 것을 의미합니다. 이를 통해 코드의 가독성과 유지 보수성을 높일 수 있습니다. 상속 상속은 하위 클래스가 상위 클래스의 특성을 물려받는 것을 의미합니다. 상속을 사용하면 코드의 재사용성을 높일 수 있으며, 객체 간의 계층 구조를 더욱 명확하게 표현할 수 있습니다. 다형성 다형성은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 다형성은 하나의 변수가 여러 개의 형식을 가질 수 있는 능력을 의미합니다. 이를 통해 코드의 유연성을 높일 수 있으며, 다..