본문 바로가기

Csharp

(43)
Caller Information Attributes C# 5.0에서 도입된 Caller Information Attributes는 메서드나 속성의 호출자 정보를 얻기 위해 사용됩니다. 이를 통해 디버깅이나 진단에 매우 유용한 정보를 얻을 수 있습니다. 주로 사용되는 세 가지 속성은 다음과 같습니다: CallerFilePathAttribute: 현재 파일의 전체 경로를 반환합니다. CallerLineNumberAttribute: 호출자의 코드 줄 번호를 반환합니다. CallerMemberNameAttribute: 호출한 메서드나 속성의 이름을 반환합니다. 다음은 Caller Information Attributes를 사용한 예시 C# 코드입니다: using System; using System.Runtime.CompilerServices; class Pro..
Async/Await async와 await 키워드를 사용하여 비동기 프로그래밍을 구현한 C# 코드 예시입니다. 이 예시에서는 두 가지 비동기 메서드를 만들어서, 그것들을 사용하여 어떻게 비동기적으로 작업을 수행하는지 보여줍니다. using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { Console.WriteLine("Start downloading..."); string content = await DownloadWebsiteContentAsync("https://www.example.com"); Console.WriteLine("Downloaded conten..
C# 5.0의 주요 특징 오늘은 C# 5.0의 주요 특징과 기능에 대해 알아보겠습니다. C#은 계속 발전하며 새로운 버전마다 다양한 기능을 제공하고 있는데요. 5.0 버전에서는 어떤 특징들이 추가되었는지 함께 살펴보겠습니다. Async/Await C# 5.0의 가장 큰 특징은 아무래도 비동기 프로그래밍을 위한 async와 await 키워드의 도입입니다. async: 이 키워드는 메서드, 람다 표현식, 익명 메서드에 사용될 수 있으며, 해당 메서드가 비동기적으로 실행될 수 있음을 나타냅니다. await: 이 키워드는 비동기 메서드 내에서 사용되며, Task나 Task의 완료를 기다립니다. await을 사용하면 해당 Task의 결과를 반환받을 수 있고, Task가 완료될 때까지 기다릴 수 있습니다. 이 두 키워드 덕분에 복잡한 콜백..
임베디드 Interop 형식 (Embedded Interop Types) C# 4.0에서는 임베디드 Interop 형식(Embedded Interop Types)이라는 기능이 도입되었습니다. 이 기능은 특히 Office와 같은 COM 구성 요소와 상호 작용할 때 유용합니다. 임베디드 Interop 형식을 사용하면 Primary Interop Assembly (PIA)를 직접 참조하지 않고도 해당 형식의 복사본을 어셈블리에 포함시킬 수 있습니다. 이로 인해 배포가 간단해지고, PIA가 설치되지 않은 시스템에서도 어플리케이션을 실행할 수 있게 됩니다. 아래는 임베디드 Interop 형식을 사용하는 간단한 예시입니다. 이 예시에서는 Microsoft Office Excel을 사용하며, 이를 위해 "Microsoft.Office.Interop.Excel"을 참조해야 합니다. 먼저, ..
COM Interop 개선사항 C# 4.0에서의 COM Interop 개선사항 중 가장 주요한 것은 dynamic 키워드를 사용하여 COM 객체를 더욱 쉽게 다룰 수 있게 된 것입니다. 그 결과, C#에서 Office 어플리케이션과 같은 COM 기반 컴포넌트를 조작할 때 코드가 훨씬 깔끔해졌습니다. 이를 보여주기 위해 간단하게 Excel을 사용하는 예제를 제공하겠습니다. 이 예제는 C# 4.0의 dynamic 키워드를 사용하여 Excel의 새로운 워크북을 생성하고 데이터를 입력하는 코드입니다. using System; using System.Runtime.InteropServices; namespace COMInteropExample { class Program { static void Main() { dynamic excelApp ..
공변성과 반공변성 (Covariance and Contravariance) 공변성(covariance)과 반공변성(contravariance)은 C#에서 제네릭 인터페이스와 대리자와 관련된 고급 개념입니다. 이를 이해하려면 먼저 공변성과 반공변성의 정의부터 알아보겠습니다. 공변성(Covariance): 서브타입의 결과를 반환하거나 얻을 수 있을 때 사용합니다. C#에서는 out 키워드로 표시됩니다. 반공변성(Contravariance): 수퍼타입의 입력을 받을 수 있을 때 사용합니다. C#에서는 in 키워드로 표시됩니다. 이제 간단한 예제를 통해 이 두 개념을 살펴보겠습니다. using System; using System.Collections.Generic; namespace CovarianceAndContravarianceExample { class Animal { } cl..
옵션 매개변수 (Optional Parameters) 옵션 매개변수(optional parameters)는 메서드 호출 시 특정 매개변수에 값을 제공하지 않아도 되도록 해당 매개변수에 기본값을 지정해주는 기능입니다. 옵션 매개변수 예제: using System; namespace OptionalParametersExample { class Program { static void Main(string[] args) { // 모든 매개변수를 제공하는 호출 Greet("John", "Hello"); // 옵션 매개변수 message를 생략하는 호출 Greet("Alice"); // 기본값을 모두 사용하는 호출 Greet(); } // name과 message 매개변수는 기본값을 가지므로 제공하지 않아도 됩니다. static void Greet(string nam..
명명된 매개변수 (Named Parameters) 명명된 매개변수(named parameters)는 메서드 호출 시 매개변수의 이름을 지정하여 전달할 수 있게 해주는 기능입니다. 이를 사용하면 매개변수의 순서에 구애받지 않고 메서드를 호출할 수 있으며, 가독성도 향상됩니다. 명명된 매개변수 예제: using System; namespace NamedParametersExample { class Program { static void Main(string[] args) { // 일반적인 메서드 호출 DisplayPerson("John", 25); // 명명된 매개변수를 사용한 메서드 호출 DisplayPerson(age: 30, name: "Alice"); } static void DisplayPerson(string name, int age) { Con..