본문 바로가기

프로그래밍/c#64

c# 비동기 프로그래밍 async, await C#에서 async와 await 키워드는 비동기 프로그래밍(Asynchronous Programming)을 지원하기 위한 핵심 요소입니다. 이 키워드들을 사용하면 비동기 작업을 쉽게 작성하고 관리할 수 있습니다. 이를 위해선 동기와 비동기에 대한 기본적인 이해가 필요합니다.   프로그래밍 동기와 비동기동기와 비동기에 대해선 프로그래밍을 배워본 사람이라면 그 개념을 잘 모르더라도 한번쯤은 들어봤을 단어일 것입니다. 저 역시도 계속 들어왔던 단어지만 그 개념은 아예 모르고 있었으니 말ks-factory.tistory.comasync메서드나 람다 표현식에 사용되어 비동기 작업을 정의할 수 있게 합니다. async 키워드는 메서드 선언에 사용됩니다.async 메서드는 Task 또는 Task 반환형을 가집니다. .. 2024. 10. 1.
c# 튜플? Tuple? 튜플(Tuple)은 서로 관련된 여러 개의 값을 하나의 데이터 구조로 묶을 수 있는 C#의 유용한 기능입니다. 튜플을 사용하면 여러 값을 반환하거나 데이터 그룹을 쉽게 전달할 수 있습니다. C# 7.0부터 튜플이 언어 수준에서 개선되었고, 보다 간편하게 사용할 수 있게 되었습니다. 튜플은 여러 개의 값을 하나의 그룹으로 묶어서 처리할 수 있는 데이터 구조입니다. 각 값은 순서대로 저장되며, 서로 다른 데이터 타입을 가질 수 있습니다.  튜플 선언과 초기화   튜플 요소에 이름을 지정할 수 있습니다. 이를 통해 코드를 더 읽기 쉽게 만들 수 있습니다.  보통 메서드는 한개의 값을 반환하는데 튜플은 메서드에서 여러 값을 반환하는 데 유용합니다.  튜플 분해튜플의 각 요소를 개별 변수로 분해할 수 있습니다. .. 2024. 8. 1.
c# 인덱서? Indexer? 인덱서의 특징과 예제 인덱서(Indexer)는 C#에서 클래스나 구조체의 객체를 배열처럼 접근할 수 있게 해주는 프로퍼티의 일종입니다. 인덱서를 사용하면 객체 내부의 데이터 컬렉션에 대해 배열의 인덱싱 구문([])을 사용하여 요소에 접근할 수 있습니다. 이는 객체의 사용성을 향상시키고, 코드의 가독성을 높여 줍니다.인덱서의 특징인덱서는 this 키워드를 사용하여 정의됩니다.인덱서는 하나 이상의 매개변수를 받을 수 있으며, 보통은 하나의 매개변수를 사용합니다.인덱서는 일반적으로 public으로 선언되어 외부에서 접근 가능합니다.get과 set 접근자를 사용하여 인덱서의 읽기와 쓰기 동작을 정의할 수 있습니다.활용 상황인덱서는 다음과 같은 상황에서 유용하게 사용될 수 있습니다:내부 컬렉션 또는 배열의 데이터에 쉽고 직관적으로 접.. 2024. 5. 3.
c# LINQ?? LINQ의 특징과 예제 LINQ (Language Integrated Query)는 C#과 같은 .NET 언어에서 데이터 소스에 대해 쿼리를 수행할 수 있도록 하는 프로그래밍 모델입니다. LINQ는 다양한 데이터 소스 (예: 배열, 컬렉션, XML, 데이터베이스)에 대해 일관된 쿼리 경험을 제공합니다. LINQ를 사용하면 쿼리를 읽기 쉬운 방식으로 작성할 수 있으며, 컴파일 타임 검사와 자동 완성 같은 IDE 기능의 이점을 누릴 수 있습니다. 여기서 쿼리는 데이터를 검색하고 제어하기 위해 데이터베이스나 정보 시스템에 요청하는 명령어라고 보시면 됩니다. 여러 쿼리 언어들이 있는데 LINQ 역시 이런 쿼리 언어들 중 하나입니다. 쿼리를 통해 데이터베이스나 다른 정보 시스템과 상호작용하면서, 필요한 정보를 효율적으로 추출하고 조작할.. 2024. 4. 16.
c# Func <대리자,델리게이트(Delegate)> Func는 이전에 다루었던 Action과 똑같은 역할을 하는 대리자 입니다. 다만 Action과는 다르게 Func는 반환형식이 포함됩니다. Func의 선언은 매개변수(0~16개)가 먼저 명시되고 마지막 인자가 반환 타입이 됩니다. 메소드를 참조하기 위해선 메소드의 매개변수의 갯수와 타입 그리고 반환 타입이 일치해야 합니다. 만약 안의 타입이 하나밖에 없다면 매개변수가 없이 반환값만 있는 Func가 됩니다. void 타입 반환시 오류가 발생하니 반드시 반환 형식을 지정해주셔야 합니다. Func 타입을 매개변수로 전달해서 활용할 수도 있습니다. 반환 형식이 있는 대리자를 사용해야 한다면 Func를 사용하시기 바랍니다. 2023. 8. 2.
c# Action (대리자, 델리게이트(Delegate)) Action은 이전에 다루었던 Delegate의 일종으로 메소드(함수)를 참조하는 타입입니다. Delegate처럼 함수를 담아두고 호출할 수 있습니다. 다만 Delegate와 달리 Action은 반환 형식이 없는 함수만 참조할 수 있습니다. 더불어 Delegate처럼 선언할 필요도 없습니다. 그 이유는 아래와 같은 형식으로 미리 선언되어 있기 때문입니다. 아래의 예는 매개변수가 없는 Action의 간단한 예입니다. 아래는 매개 변수 타입이 있는 Action입니다. 매개변수는 16개까지 넣을 수 있습니다. 위 예제에서 Action는 두 개의 정수를 매개변수로 받는 메소드(함수)를 참조합니다. AddNumbers 메서드는 Action과 동일한 매개변수 타입과 개수를 가지고 있기에 addDelegate라는 A.. 2023. 8. 1.
c# 메모리 구조, 메모리 영역(스택, 힙, 데이터, 코드) 작성한 프로그램을 실행하게 되면 메모리에 각각의 데이터들이 저장되며 필요에 따라 쓰고 지우고를 반복하며 프로그램이 실행됩니다. 그리고 그 필요에 따라 각 데이터의 저장 공간이 구분되어 저장됩니다. 대표적으로 나누는 4개의 영역에 대해 알아보겠습니다. 1. 코드 영역 프로그램의 실행 코드가 저장되는 공간입니다. C# 프로그램은 MSIL (Microsoft Intermediate Language) 또는 CIL (Common Intermediate Language)이라고도 하는 중간 언어로 컴파일되며, 이 MSIL 코드가 코드 영역에 저장됩니다. 실행 시에 CLR (Common Language Runtime)에 의해 MSIL 코드가 실제 기계 코드로 변환되고 실행됩니다. 2. 데이터 영역 정적 변수와 상수, .. 2023. 7. 27.
C# 반복문 for와 while의 차이 for와 while은 C#에서 반복문을 구현하기 위해 사용되는 두 가지 주요한 키워드입니다. 이들은 비슷한 목적을 가지고 있지만 사용 방법과 사용 시기에서 차이가 있습니다. for 루프는 초기화, 조건식, 반복 후 작업을 담은 블록으로 구성됩니다. for 루프의 일반적인 구문은 다음과 같습니다. 초기화: 반복문이 시작될 때 한 번 실행되는 초기화 구문입니다. 일반적으로 카운터 변수를 초기화하는 데 사용됩니다. 조건식: 반복이 진행될지를 결정하는 논리식입니다. 조건식이 참(true)인 경우 반복이 계속되고, 거짓(false)인 경우 반복이 종료됩니다. 반복 후 작업: 반복 실행 후에 한 번 실행되는 작업입니다. 보통 카운터 변수를 업데이트하는 데 사용됩니다. for 루프는 반복 횟수를 미리 알고 있는 경우.. 2023. 7. 26.
C#의 기본 자료형, 데이터 형식 DataTypes C#에서는 기본적으로 다음과 같은 데이터 타입들이 제공됩니다. 데이터 타입(Data Types) 정수형 타입: int, long, short, byte 등이 있으며, 정수 값을 저장합니다. 부동 소수점 타입: float, double, decimal이 있으며, 실수 값을 저장합니다. 문자형 타입: char는 단일 문자를 저장하며, string은 문자열을 저장합니다. 논리형 타입: bool은 참(True) 또는 거짓(False) 값을 저장합니다. 데이터 타입은 변수의 크기와 저장 방식을 결정하며, 변수에 할당되는 값의 유효 범위를 제한합니다. 예를 들어, int는 32비트 정수를 저장하며, bool은 true 또는 false만을 저장할 수 있습니다. 2023. 7. 25.
c#_49 델리게이트 , 델리게이트 체인 Delegate 델리게이트는 함수를 대신해서 호출해주는 대리자입니다. 직접 함수를 호출하는 것이 아닌 함수 호출시 매개변수로 함수를 참조하여 호출합니다. 좀 더 쉽게 보자면 함수를 담아둘 수 있는 변수라고도 볼 수 있겠네요. 아래의 예제를 통해서 살펴보시죠. 위 예제에서 보듯 델리게이트는 함수를 다른 함수로 전달할 수 있습니다. 이 델리게이트에 함수를 대입함으로써 함수의 주소가 델리게이트에 할당이 되고 델리게이트를 매개변수로 넘겨 함수를 대리호출하게 됩니다. 단 주의해야 할 점은 델리게이트의 매개 변수 타입과 갯수 그리고 반환 형식이 전달하고자하는 함수와 동일해야 합니다. 이 델리게이트는 다양하게 활용할 수 있지만 흔히 콜백 함수로써 활용됩니다. 어떤 이벤트가 발생했을 때 그 이벤트와 연관된 함수들을 등록해두고 이벤트가.. 2022. 2. 14.
c#_48 일반화 Generalization <T> 자료구조를 배우셨다면 아마 List, Dictionary 등 라는 것을 접해보셨을 겁니다. 자료구조를 활용할 순 있지만 가 무엇인지 모르고 쓰는 경우도 있으리라 생각이 듭니다. 저 역시 그런 경우였구요. 그래서 이 제너릭에 대해서 알아보고자 합니다. 보통 클래스를 만들게 되면 클래스에 포함된 모든 데이터들의 타입을 정해주게 됩니다. 아래 예제처럼 말이죠.하지만 클래스의 역할에 따라선 일부 데이터들의 타입이 여러가지가 필요한 경우들이 있습니다. 예를 들어 정수형 타입 int를 매개 변수를 받아 더하는 함수가 포함된 클래스가 있다면 int 타입 외에는 처리를 할 수가 없습니다. 그렇다고 같은 역할을 하는 클래스를 하나 더 만드는 것도 낭비입니다. 그래서 필요한 것이 바로 입니다. 제너릭를 통해서 매개 변수의.. 2022. 2. 11.
c#_47 ?. ?? Null 조건 연산자 먼저 ?. 연산자에 대해 알아보도록 하겠습니다. ?. 연산자는 해당 객체가 Null이면 Null을 반환하고 아니면 값을 반환합니다. 이 연산자를 활용하면 if문을 사용해서 null체크를 하지 않고도 간단하게 null체크를 할 수가 있습니다. 더불어 에러 발생도 예방할 수 있습니다. 위 예제에서 보듯 해당 객체가 비어있다면 null을 반환하고, 아니면 해당 객체의 속성 값을 반환하거나 함수를 호출합니다. ?.의 경우 리턴을 받게되는 변수가 Null타입을 가질 수 있는 리턴 변수여야 합니다. 그렇지 않다면 활용할 수 가 없습니다. 그래서 ?? 연산자와 함께 활용합니다. if문을 통해서 tc가 null인지 아닌지 체크할 필요없이 ?.연산자를 통해 해당 객체를 판별하고 ??와 함께 활용하여 판별 결과에 따라 객.. 2022. 2. 8.
반응형