반응형 분류 전체보기628 C# Closure 이해하기 C# Closure Closure는 C# 2.0부터 지원된 기능으로서 C#의 무명메서드(Anonymous Method)와 람다식(Lambda Expression)으로 구현할 수 있다. 먼저 간단히 무명메서드를 이용하여 Closure를 사용한 예를 살펴보자. 다음은 간단한 무명메서드를 정의하여 print라는 델리게이트 객체에 할당한 예이다. 여기서 정의된 delegate 블록은 작은 함수라 볼 수 있는데, 이 함수는 단순히 콘솔 출력 문장 하나로 되어 있다. 이것이 Closure가 아니다. public void Test2() { Action print = delegate (string msg) { Console.WriteLine(msg); }; print("A"); } 이제 한걸음 더 나아가 Test() .. 2023. 8. 2. C# 무명 메서드(Anonymous Method) 무명 메서드(Anonymous method) C# 2.0에서부터 메서드를 미리 정의하지 않아도 되는 메서드명이 없는 무명 메서드(혹은 익명 메서드, Anonymous Method)를 지원하게 되었다. 만약 어떤 메서드가 일회용으로 단순한 문장들로 구성되어 있다면, 굳이 별도의 메서드를 정의하지 않아도 되는 것이다. 무명 메서드를 만들기 위해서는 delegate 키워드와 함께 아래와 같이 파라미터와 실행 문장 블록을 적으면 된다. delegate 뒤의 파라미터는 해당 메서드 원형(prototype)에 맞는 동일한 파라미터 타입이어야 하며, 실행 문장블록에는 여러 문장들을 쓸 수 있다. 무명 메서드는 외관상 인라인 메서드(inline method) 형식을 띠며, 무명 메서드 자체를 delegate 타입의 변.. 2023. 8. 2. 스레드(Thread)란 스레드(Thread)란?오늘날의 운영체제들은 프로세스를 효율적으로 사용하고, 작업의 유연성을 얻기 위해 멀티스레드를 지원한다.스레드의 정의프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고, 실제 작업은 CPU가 수행한다. 이때 CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드이다. 그러므로 CPU가 처리하는 작업 단위는 프로세스로부터 전달받은 스레드인 것이다. 운영체제의 입장에서 작업 단위는 프로세스이고, CPU입장에서의 작업 단위는 스레드인 것이다.따라서 프로세스 입장에서는 스레드를 다음과 같이 정의할 수 있다. 스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위.작업(job)의 크기크기 순서로 나열하면 다음과 같다.Thread(ope.. 2023. 7. 31. CPU의 구조와 작동방식 기본적인 컴퓨터 구조오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다. 폰노이만 구조는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조를 말한다. 이 구조가 등장하기 이전에는 하드와이어링 형태로 전선 연결이 계속 바꾸는 형태였다. 이러한 문제를 해결하기 위해 폰노이만은 메모리를 이용하여 프로그래밍이 가능한 컴퓨터 구조, 즉 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식을 고안했다.폰노이만 구조의 가장 큰 핵심은 '모든 프로그램이 메모리에 올라와야 실행할 수 있다'는 것이다.CPU의 구성CPU는 크게 3가지 구성으로 이루어져 있는데 산술논리 연산장치, 제어장치, 레지스터이다.산술논리 연산장치(arithmetic and logical unit, ALU)CPU.. 2023. 7. 28. 메모리가 왜 컴퓨터의 전체 성능을 좌우할까? 메모리가 왜 컴퓨터의 전체 성능을 좌우할까? CPU가 일을 하려면 일의 내용이 CPU로 전달이 되어야 한다. 이 명령어나 데이터는 파일에 담겨있다. 파일은 하드디스크에 저장되어 있다. 파일의 내용이 하드 디스크에서 CPU까지 전달되려면 데이터가 BUS를 타야 한다. 컴퓨터 안에도 버스가 있다. 컴퓨터 안의 데이터들을 실어 날라주는 연결선이다. 데이터 버스 이렇게 부른다. 그러면 하드디스크에 있는 파일의 일부가 이 버스를 타고 CPU로 올라간다. CPU에서 일처리가 끝나면 결과가 다시 버스를 타고 어디론가 흘러간다. 이렇게 버스로 컴퓨터 안에서 오간다. 이때 문제는 버스가 상대적으로 느리다는 것이다. 상대적이라는 말을 이해해야 하는 것은 컴퓨터 안에서 데이터가 오가는 속도는 사실 굉장히 빠르다. 사실 하드.. 2023. 7. 28. C# 7.0 튜플(Tuple) 튜플이란? C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴할 수 있었지만, C# 7부터는 튜플(Tuple)을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있게 되었다. 메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type) 표현식을 사용하게 되는데, 이는 괄호 ( ) 안에 여러 리턴타입을 순서대로 나열하면 된다. 예를 들어, int 2개와 double 하나를 리턴할 경우 (int, int, double)과 같이 표현할 수 있으며, 더 나아가 편의를 위해 각 리턴타입마다 이름을 지정할 수도 있다. 예를 들어 (int count, int sum, double average)와 같이 작성이 가능하다. 예제 코드 (double, int) t1 = (4.5.. 2023. 7. 27. 이전 1 ··· 77 78 79 80 81 82 83 ··· 105 다음