CS 공부 19

[C#] LINQ(Language Integrated Query)

C#에서 LINQ는 데이터를 쉽게 검색, 필터링, 정렬, 변환할 수 있도록 돕는 기능입니다. LINQ는 데이터를 쿼리하는 방식에 통일성을 제공하며, 데이터베이스, 컬렉션, XML, Entity Framework 등 다양한 데이터 소스에 적용할 수 있습니다. 이번 글에서는 LINQ가 무엇인지, 그 특징과 장점, 그리고 사용 방법을 설명하겠습니다.   1. LINQ란?LINQ는 C# 언어에서 데이터를 쿼리하는 표준화된 방법을 제공하는 기능입니다. LINQ는 컬렉션, 배열, 데이터베이스, XML, 파일 등 여러 데이터 소스에 대해 일관된 방식으로 데이터를 검색할 수 있게 해줍니다.LINQ는 SQL 쿼리 문법과 비슷한 방식으로 데이터를 쿼리할 수 있도록 지원하며,  데이터베이스에 국한되지 않고 메모리에 있는 컬..

CS 공부 2024.09.20

[C#] 확장 메서드(Extension Methods)

C#에서 확장 메서드(Extension Method)는 기존의 클래스나 구조체를 변경하지 않고, 새로운 메서드를 추가할 수 있는 기능입니다. 이 기능을 통해 기존 코드에 손을 대지 않고도 클래스의 동작을 확장할 수 있으며, 특히 LINQ에서 자주 사용되는 기능이기도 합니다.이번 글에서는 C#의 확장 메서드가 무엇인지, 그 특징과 사용 이유, 실제로 어떻게 구현하고 사용하는지에 대해 설명하겠습니다.   1. 확장 메서드란?확장 메서드는 기존 클래스나 구조체를 변경하지 않고도, 새로운 메서드를 추가하여 동작을 확장할 수 있게 해줍니다. 이 메서드는 정적(static) 클래스 안에서 정의되며, 첫 번째 매개변수로 this 키워드를 사용해 확장할 대상을 지정합니다.기본적으로 C#에서 제공하는 클래스나, 사용자가..

CS 공부 2024.09.13

[Unity] 생명주기(Life Cycle)

Unity에서 MonoBehaviour는 모든 스크립트가 상속받는 기본 클래스입니다. 게임 오브젝트의 동작을 정의하고 제어할 때 사용되며, 이 클래스의 메서드들은 특정한 순서에 따라 생명주기(lifecycle)동안 자동으로 호출됩니다. 이 생명주기를 이해하면, 게임 오브젝트가 언제 어떻게 동작하는지를 제어할 수 있고, 효율적인 로직을 작성할 수 있습니다. MonoBehaviour에 대해서는 다음에 알아보도록 하고, 이번 글에서는 생명주기에 대해서 알아보겠습니다.   1. 생명주기란?Unity의 생명주기는 게임 오브젝트의 상태에 따라 특정 시점에 호출되는 일련의 메서드들로 이루어져 있습니다. 이러한 메서드들은 게임 오브젝트가 생성, 활성화, 업데이트, 비활성화, 삭제되는 과정에서 순차적으로 호출됩니다.이 ..

CS 공부 2024.09.04

[C#] 참조 매개변수 전달 (ref, out)

C#에서 ref와 out 키워드는 메서드에서 매개변수를 참조로 전달할 때 사용됩니다. 일반적으로 메서드는 매개변수의 값을 복사하여 전달하는 값 전달 방식을 사용하지만, ref와 out을 사용하면 참조 전달이 가능합니다. 이를 통해 메서드가 호출된 변수의 값을 직접 변경할 수 있습니다. 이 글에서는 ref와 out 키워드의 사용법, 차이점, 그리고 예제를 통해 알아보도록 하겠습니다!   1. ref 키워드란?ref(Reference)키워드는 메서드에 매개변수를 참조로 전달할 때 사용됩니다. 이 키워드를 사용하면 메서드가 호출된 변수의 기존 값에 접근하고, 이를 수정할 수 있습니다. 즉, 매개변수는 복사본이 아닌 실제 변수에 대한 참조를 전달받기 때문에, 메서드 내부에서 변경된 값이 메서드 외부에서도 반영이..

CS 공부 2024.08.31

[C#] 오버로딩과 오버라이딩 (Overloading & Overriding)

C#은 객체 지향 프로그래밍 언어로, 다형성(Polymorphism)을 지원합니다. 다형성의 중요한 두가지 개념이 바로 오버로딩(Overloading)과 오버라이딩(Overriding)인데요. 이 글에서는 오버로딩과 오버라이딩이 무엇인지, 그 특징과 사용 이유, 그리고 실제 예제와 함께 사용하는 방법에 대해 알아보겠습니다.   1. 오버로딩(Overloading) 이란?오버로딩(Overloading)은 같은 이름의 메서드를 여러 개 정의하는 기법으로, 메서드의 매개변수의 수나 타입을 다르게 설정하여 동일한 메서드 이름을 여러 용도로 사용할 수 있게 해줍니다. C#에서는 메서드 오버로딩뿌만 아니라 생성자 오버로딩도 지원합니다. 오버로딩을 통해 함수 이름을 재사용할 수 있어 코드의 가독성과 유지보수성을 높일..

CS 공부 2024.08.20

[C#] 람다식(Lambda Expression)

C#에서람다식(Lambda Expression)은 코드의 간결성과 가독성을 높여주는 강력한 기능입니다. 이번 글에서는 람다식이 무엇인지, 어떤 특징이 있는지, 왜 사용하는지, 그리고 어떻게 사용하는지를 예제 코드와 함께 설명하겠습니다.  1. 람다식이란?람다식은 익명 함수(Anonymous Function)의 한 종류로서, 코드를 간단하게 표현하기 위해 사용됩니다. 이름 없는 메서드를 간단히 표현할 수 있으며, 함수를 매개 변수로 전달하거나 즉시 실행해야 하는 경우에 유용합니다. 람다식은 다음과 같은 형식으로 표현됩니다:(parameters) => expression여기서 "parameters'는 입력 매개변수를, 'expresstion'은 실행할 코드 블록을 나타냅니다. 일반적으로 람다식은 짧고 간단한..

CS 공부 2024.08.16

[C#] 변수 종류와 키워드

C#은 객체 지향 프로그래밍 언어로, 다양한 종류의 변수를 지원합니다. 변수는 데이터의 값을 저장하기 위해 사용되며, 변수의 범위와 수명에 따라 전역 변수, 지역 변수, 정적 변수, 매개 변수 등으로 나뉩니다. 또한 readonly와 const 키워드는 변수의 불변성을 보장하기 위해 사용됩니다. 이번 글에서는 각 변수의 특성과 사용법에 대해 자세히 설명하고, 관련 예제 코드를 함께 보여드리겠습니다.  1. 전역 변수(Global Variable)전역 변수는 클래스 내부, 메서드 외부에 선언되어 클래스의 모든 메서드에서 접근할 수 있는 변수입니다. 그러나 이 변수는 클래스의 인스턴스와 밀접하게 연관되어 있으며, 클래스의 인스턴스가 생성될 때 힙(Heap) 메모리에 할당되고, 인스턴스가 소멸될 때 함께 해제..

CS 공부 2024.08.09

[C#] 클래스와 구조체 (Class & Structure)

C#은 객체 지향 프로그래밍(OOP)을 기반으로 하는 언어로, 클래스와 구조체는 데이터를 정의하고 조작하는 두 가지 주요 방식 입니다. 둘 다 데이터와 메서드를 포함할 수 있지만, 사용되는 방식과 목적에는 중요한 차이점이 있습니다.   1. 클래스(Class)클래스는 객체 지향 프로그래밍의 핵심 개념으로, 객체의 청사진(buleprint) 역할을 합니다. 클래스는 데이터(필드)와 기능(메서드)을 포함할 수 있으며, 이를 통해 객체를 생성할 수 있습니다. 참조 타입: 클래스는 참조 타입입니다. 객체는 힙(heap) 메모리에 할당되며, 객체에 대한 참조(reference)가 변수에 저장됩니다.상속 가능: 상속을 통해 다른 클래스의 멤버를 확장할 수 있습니다.생성자: 생성자를 통해 객체가 생성될 때 초기화할 ..

CS 공부 2024.08.04

[C#] 대리자 (Delegate)

1. 대리자란? C#에서 대리자는(Delegate)는 특정 메서드를 참조하는 형식의 안전한 객체입니다. 이는 C++의 함수 포인터와 비슷하지만, 형식 안전성(type-safety)을 보장하고 객체 지향 프로그래밍 개념을 따릅니다. 대리자는 메서드를 변수처럼 다룰 수 있게 해주며, 메서드를 매개변수로 전달하거나 반환할 수 있게 해줍니다.  대리자의 선언 및 사용 방법 1. 대리자 선언public delegate void MyDelegate(string message); //대리자 선언 2. 대리자 인스턴스 생성MyDelegate del = new MyDelegate(MethodToCall); 3. 대리자 호출del("Hello, World!"); 4. 대리자를 통한 콜백 사용public void Metho..

CS 공부 2024.07.27

[C#] 메모리 구조

메모리 관리는 소프트웨어 성능 및 안정성에 중요한 요소이며, 개발자가 잘 이해하고 코드를 작성하게 되면 더 효율적이고 안정적인 코드를 작성할 수 있습니다. C#에서는 메모리 관리가 주로 가비지 컬렉터(Garbage Collector)에 의해 자동으로 처리되지만, 메모리 구조를 이해하는 것은 필수적입니다. 이 글에서는 C# 프로그램의 메모리 구조에 대해 살펴보겠습니다. 메모리 구조는 코드가 실행되는 동안 데이터가 어떻게 저장되고 관리되는지를 설명하는데, 이는 크게 네가지 주요 영역으로 나뉩니다.  코드 영역(Code Segment), 데이터 영역(Data Segment), 스택(Stack), 힙(Heap)코드 영역은 프로그램의 실행 코드를 저장합니다.데이터 영역은 초기화된 데이터와 초기화되지 않은 데이터를..

CS 공부 2024.07.22