전체 글

전체 글

    [C#] 익명 메소드와 람다식

    [C#] 익명 메소드와 람다식

    2023.02.27 - [C# 프로그래밍] - [C#] 대리자(Delegate) [C#] 대리자(Delegate) C#에서 대리자는 콜백(Callback)을 구현하기 위해 사용됩니다. 콜백이란 어떤 일을 해줄 코드를 만들고, 이 코드가 실행할 이벤트 코드는 컴파일 시점이 아닌 프로그램이 실행 중인 시점에 부여하 onesside-world.tistory.com 이번 게시물을 이해하려면 무조건 전 게시물인 대리자에 대해 알고 있어야 합니다. 1. 익명 메소드 일단 예제부터 살펴보겠습니다. delegate int Calculate(int x, int y); class Program { static void Main(string[] args) { Calculate calc calc = delegate(int x..

    [C#] 대리자(Delegate)

    [C#] 대리자(Delegate)

    C#에서 대리자는 콜백(Callback)을 구현하기 위해 사용됩니다. 콜백이란 어떤 일을 해줄 코드를 만들고, 이 코드가 실행할 이벤트 코드는 컴파일 시점이 아닌 프로그램이 실행 중인 시점에 부여하는 식입니다. 객체의 주소를 가리키는 "참조"를 제가 전 게시물에서 소개한 적이 있을 겁니다. 대리자는 메소드에 대한 참조입니다. 대리자에 메소드의 주소를 할당한 후 대리자를 호출하 이 대리자가 메소드를 호출해 줍니다. 즉, 대리자(Delegate)는 메소드를 참조하는 객체입니다. 대리자는 메소드를 변수에 할당하거나 매개변수로 전달하거나 반환값으로 사용할 수 있습니다. 대리자는 델리게이트 타입을 선언하여 사용합니다. 델리게이트 타입은 반환형과 매개변수를 지정하여 선언합니다. 예를 들어, int를 반환하고 int..

    [C#] C#에서 예외 처리 구현 간단하게

    [C#] C#에서 예외 처리 구현 간단하게

    예외 처리는 코드 실행 도중 발생할 수 있는 예기치 않은 상황에 대응하기 위한 메커니즘입니다. 이러한 예외 상황은 프로그램의 실행을 중단시킬 수 있는데, 예를 들어 파일이 존재하지 않는 경우나 연산이 불가능한 경우 등이 있습니다. 이러한 상황에 대처하려면 예외 처리를 해야 합니다. C#에서 예외 처리는 try-catch-finally 블록을 사용하여 구현합니다. try 블록 안에는 예외가 발생할 가능성이 있는 코드를 작성합니다. catch 블록 안에는 예외가 발생했을 때 처리할 코드를 작성합니다. finally 블록은 try 블록에서 실행된 코드 이후에 항상 실행되는 코드 블록입니다. 예를 들어, 다음 코드는 파일을 읽어 들이는 코드입니다. try { StreamReader reader = new Str..

    [C#] foreach가 가능한 객체 만들기

    [C#] foreach가 가능한 객체 만들기

    foreach문은 컬렉션(배열, 리스트 등)의 요소들을 하나씩 꺼내서 처리하는 반복문입니다. 하지만, foreach 문은 객체를 반복 순회할 수 없습니다. foreach 문이 객체 내의 요소를 순회하기 위해서는 foreach 문과의 약속을 지켜야 합니다. 그 약속이란 IEnumerable과 IEnumerator 인터페이스를 상속하는 형식만 지원하기 때문입니다. 1. IEnumerable 인터페이 IEnumerable은 하나의 메소드만 가지고 있어서 이것만 구현하면 됩니다. 메소드 설명 IEnumerator GetEnumerator() IEnumerator 형식의 객체를 반환 왜 IEnumerator 형식을 반환하냐면 IEnumerable 인터페이스가 다음과 같이 정의되어 있기 때문입니다. public i..

    [C#] 인덱서

    [C#] 인덱서

    C# 인덱서(Indexer)는 객체의 인스턴스 변수에 대한 배열 형태의 접근 방법을 제공합니다. 인덱서를 사용하면 객체의 내부 변수에 대해 배열과 같은 방식으로 접근할 수 있습니다. 인덱서는 다음과 같은 형식으로 정의됩니다. public returnType this[parameters] { get { /* 인덱서를 읽을 때 수행되는 코드 */ } set { /* 인덱서에 쓸 때 수행되는 코드 */ } } 위 코드에서 returnType은 인덱서가 반환하는 값의 자료형이며, parameters는 인덱서의 매개변수입니다. get 블록은 인덱서를 읽을 때 호출되며, set 블록은 인덱서에 값을 할당할 때 호출됩니다. 예를 들어, 다음은 인덱서를 사용한 클래스의 예입니다. class MyArray { priva..

    [C#] 컬렉션 초기화

    [C#] 컬렉션 초기화

    2023.02.23 - [C# 프로그래밍] - [C#] 컬렉션 [C#] 컬렉션 컬렉션(collection)이란, 같은 성격을 띄는 데이터의 모음을 담는 자료 구조를 말합니다. 위의 설명에서 컬렉션만 배열로 한번 바꿔 보면 배열 설명과 정의가 같습니다. 그렇습니다! 배열도 .NET 프 onesside-world.tistory.com 컬렉션을 초기화하는 방법 1. 배열로 초기화 ArrayList, Queue, Stack은 배열의 도움을 받아 간단하게 초기화를 할 수 있습니다. 이들 컬렉션의 생성자를 호출할 때 매개 변수로 배열 객체를 넘기면 컬렉션 객체는 해당 배열을 바탕으로 내부 데이터를 채웁니다. 다음은 예제 코드입니다. int[] arr = { 123, 456, 789 } ArrayList list =..

    [C#] 일반화 컬렉션

    [C#] 일반화 컬렉션

    2023.02.23 - [C# 프로그래밍] - [C#] 컬렉션 [C#] 컬렉션 컬렉션(collection)이란, 같은 성격을 띄는 데이터의 모음을 담는 자료 구조를 말합니다. 위의 설명에서 컬렉션만 배열로 한번 바꿔 보면 배열 설명과 정의가 같습니다. 그렇습니다! 배열도 .NET 프 onesside-world.tistory.com 바로 전 게시물에서는 컬렉션에 대해 적어봤습니다. 이때 소개한 컬렉션 클래스들은 모두 object 형식을 기반으로 했습니다. 어떤 형식이든 간에 object 형식으로 상속받고 있으므로 object 형식으로 형식 변환이 가능합니다. 컬렉션들은 바로 이 점을 이용해서 만들어진 자료 구조입니다. 이들 컬렉션은 object 형식에 기반하고 있기 때문에 태생적으로 성능 문제를 안고 있습..

    [C#] 컬렉션

    [C#] 컬렉션

    컬렉션(collection)이란, 같은 성격을 띠는 데이터의 모음을 담는 자료 구조를 말합니다. 위의 설명에서 컬렉션만 배열로 한번 바꿔 보면 배열 설명과 정의가 같습니다. 그렇습니다! 배열도 .NET 프레임워크가 제공하는 다양한 컬렉션 자료 구조의 일부입니다. .NET 프레임워크는 배열 말고도 멋진 컬렉션 클래스들을 여러 개 제공합니다. 그중 네 개를 살펴보며 컬렉션에 대해 설명을 붙이겠습니다.(。・∀・) ノ゙ ArrayList Queue Stack Hashtable 코드 쓰기 전에 using System.Collections; 하는 거 잊지 말기!! ᕦ(ò_óˇ)ᕤ 1. ArrayList ArrayList는 가장 배열과 닮은 컬렉션이라 할 수 있습니다. 컬렉션의 요소에 접근할 때는 [ ] 연산자를 이..

    [C++][C#] 클래스 객체 인스턴스 생성

    [C++][C#] 클래스 객체 인스턴스 생성

    C++에서 객체 인스턴스를 생성하는 방법1. 스택에 정적으로 객체 인스턴스를 생성하는 방법class MyClass { public: int value; }; int main() { // 객체 인스턴스 정적 생성 MyClass myObject; // 정적으로 생성된 객체 인스턴스 사용 myObject.value = 10; return 0; }위의 코드에서 MyClass의 객체 인스턴스를 정적으로 생성하려면, MyClass의 객체 이름인 myObject를 선언하면 됩니다. 이렇게 하면 myObject가 객체 인스턴스를 직접 생성하고, 객체의 메모리를 스택(stack)에 할당합니다. 정적으로 생성된 객체 인스턴스는 프로그램의 실행 중에 계속해서 메모리에 상주하며, 함수 내부에서도 사용할 수 있습니다. 이러한 ..