728x90
반응형
1. 패턴 매칭
object obj = "Hello";
if (obj is string str)
{
Console.WriteLine(str); // "Hello" 출력
}
C# 7.0부터 도입된 패턴 매칭 기능은 switch 문이나 is 키워드를 사용하여 변수의 타입이나 구조를 검사하는 데 유용합니다.
2. 확장 메서드
public static class StringExtensions
{
public static int WordCount(this string str)
{
return str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
// 사용 예
string sentence = "Hello world";
int count = sentence.WordCount(); // 2 반환
확장 메서드는 기존 클래스에 새로운 메서드를 추가할 수 있는 기능입니다.
이를 통해 클래스의 기능을 확장할 수 있습니다.
3. 정적 클래스
public static class MathUtility
{
public static int Add(int a, int b)
{
return a + b;
}
}
// 사용 예
int sum = MathUtility.Add(5, 10);
정적 클래스는 인스턴스를 생성할 수 없는 클래스입니다.
모든 멤버가 정적(static)으로 선언되어야 하며, 주로 유틸리티 메서드를 정의하는 데 사용됩니다.
4. 네임스페이스
namespace MyApplication.Models
{
public class Product
{
public string Name { get; set; }
}
}
네임스페이스는 관련된 클래스, 인터페이스, 구조체 등을 그룹화하는 데 사용됩니다.
이를 통해 코드의 조직을 개선하고 이름 충돌을 방지할 수 있습니다.
5. 제네릭
public class Box<T>
{
private T content;
public void Put(T item)
{
content = item;
}
public T Get()
{
return content;
}
}
// 사용 예
var intBox = new Box<int>();
intBox.Put(123);
제네릭을 사용하면 데이터 타입에 구애받지 않고 클래스나 메서드를 정의할 수 있습니다.
이를 통해 코드의 재사용성을 높이고, 타입 안전성을 강화할 수 있습니다.