본문 바로가기

워크

(112)
공변성과 반공변성 (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..
동적 바인딩 (Dynamic Binding) C# 4.0의 dynamic 키워드를 이용한 동적 바인딩에 대한 간단한 예시를 제공하겠습니다. 동적 바인딩 예제: using System; namespace DynamicExample { class Program { static void Main(string[] args) { dynamic dynamicVariable = 10; Console.WriteLine("Initial value: " + dynamicVariable); dynamicVariable = "Now, I am a string!"; Console.WriteLine("After changing: " + dynamicVariable); } } } 이 예제에서 dynamicVariable은 초기에 정수 값 10을 가지고 있습니다. 그러나 dy..
C# 4.0의 주요 특징 안녕하세요, C# 개발자 여러분! 오늘은 C#의 여러 버전 중 하나인 C# 4.0에 대해 이야기해보려고 합니다. 이 버전은 2010년에 출시되었으며, 많은 신기술과 강력한 기능들을 도입해 개발자들에게 새로운 세계를 제시했습니다. C# 4.0의 주요 특징과 기능을 살펴봅시다. 동적 바인딩 (Dynamic Binding): dynamic 키워드를 도입하여, 컴파일 타임에 타입을 지정하지 않고 런타임에 타입을 결정할 수 있게 되었습니다. 이로 인해 COM 및 다른 동적 언어와의 통합이 쉬워졌습니다. 명명된 매개변수 (Named Parameters): 메서드 호출 시 매개변수의 이름을 지정하여 전달할 수 있게 되었습니다. 이를 통해 코드의 가독성이 향상되었습니다. PrintOrderDetails(orderNum..
Collection Initializers Collection Initializers (컬렉션 초기화자) 컬렉션 초기화자는 C# 3.0에서 도입된 기능으로, 컬렉션 객체를 초기화할 때 간결하게 여러 항목을 추가할 수 있게 합니다. 컬렉션 초기화자는 Add 메서드를 가진 타입에 사용될 수 있으며, 주로 리스트, 딕셔너리 등의 컬렉션 타입에 사용됩니다. 다음은 컬렉션 초기화자의 몇 가지 예시입니다: List의 초기화: List numbers = new List { 1, 2, 3, 4, 5 }; Dictionary의 초기화: Dictionary nameToAge = new Dictionary { { "John", 30 }, { "Jane", 25 }, { "Mike", 40 } }; Queue와 Stack의 초기화: Dictionary nameToAg..
Object Initializers Object Initializers (객체 초기화자) 객체 초기화자는 C# 3.0에서 도입된 기능으로, 객체를 생성하고 동시에 그 속성을 초기화하는 더 간결하고 가독성 높은 방식을 제공합니다. 이를 통해 여러 줄의 코드 없이 객체의 여러 속성을 한번에 설정할 수 있습니다. 다음은 객체 초기화자의 사용 예시입니다: 기본적인 객체 초기화자 사용법: public class Person { public string Name { get; set; } public int Age { get; set; } } // 객체 초기화자를 사용한 객체 생성 및 초기화 Person john = new Person { Name = "John", Age = 30 }; 중첩된 객체 초기화: public class Address { p..
Partial Methods Partial Methods (부분 메서드) 부분 메서드는 C#에서 partial 클래스, 구조체 또는 인터페이스의 일부로 선언될 수 있는 특별한 메서드입니다. 부분 메서드는 메서드의 선언 부분과 구현 부분을 분리하여 정의할 수 있습니다. 구현되지 않은 부분 메서드는 컴파일 타임에 자동으로 제거됩니다, 즉 실행 시에 아무런 효과가 없습니다. 다음은 부분 메서드의 예시입니다: 부분 클래스와 부분 메서드 선언: MyPartialClass.cs 파일: public partial class MyPartialClass { partial void PartialMethod(); public void PublicMethod() { // 부분 메서드 호출 PartialMethod(); } } MyPartialClass...