본문 바로가기

C#

Part 1: C#의 문법 기능 소개

반응형

소개

C#은 지속적으로 발전하여 개발자들에게 새로운 기능과 개선된 문법을 제공하고 있습니다. 이 블로그 글 시리즈에서는 C#의 문법 기능에 대해 자세히 알아보겠습니다. 첫 번째 글에서는 주요 문법 기능을 소개하고, 두 번째 글에서는 실제 코드 예제를 통해 이러한 기능들을 설명하겠습니다.

C#의 주요 문법 기능

1. 글로벌 using 지시문

글로벌 using 지시문을 사용하면 여러 파일에서 공통으로 사용하는 네임스페이스를 한 번만 선언하여 코드의 중복을 줄일 수 있습니다.

2. 파일 범위 네임스페이스

파일 범위 네임스페이스를 사용하면 네임스페이스 선언을 간결하게 작성할 수 있습니다.

3. 레코드 구조체

레코드 구조체는 불변 데이터 구조를 쉽게 만들 수 있는 새로운 타입입니다.

4. 상수 인터폴레이션 문자열

상수 인터폴레이션 문자열을 사용하면 컴파일 시간에 상수 문자열을 생성할 수 있습니다.

5. 개선된 패턴 매칭

패턴 매칭 기능이 더욱 강화되어 더 다양한 형태의 조건문을 작성할 수 있습니다.

6. with 표현식을 통한 익명 타입 지원

이제 with 표현식을 사용하여 익명 타입을 복사할 수 있습니다.

글로벌 using 지시문

이 기능을 통해 여러 파일에서 공통으로 사용하는 using 지시문을 각 파일에 중복 작성하지 않고 한 곳에 작성하여 간편하게 관리할 수 있습니다.

// 글로벌 using 지시문
global using System;
global using System.Collections.Generic;

namespace GlobalUsingExample
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> names = new List<string> { "Alice", "Bob", "Charlie" };

            foreach (var name in names)
            {
                Console.WriteLine(name);
            }
        }
    }
}

파일 범위 네임스페이스

파일 범위 네임스페이스를 사용하면 네임스페이스 블록을 줄일 수 있어 코드가 더 깔끔해집니다.

namespace FileScopedNamespaceExample;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

레코드 구조체

레코드 구조체는 불변 데이터 구조를 쉽게 만들 수 있게 해 줍니다.

public readonly record struct Point(int X, int Y);

class Program
{
    static void Main(string[] args)
    {
        var point = new Point(3, 4);
        Console.WriteLine($"Point: ({point.X}, {point.Y})");
    }
}

상수 인터폴레이션 문자열

상수 인터폴레이션 문자열을 사용하면 컴파일 시간에 상수 문자열을 생성할 수 있습니다.

const string name = "World";
const string greeting = $"Hello, {name}!";

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(greeting);
    }
}

개선된 패턴 매칭

패턴 매칭 기능이 강화되어 더 다양한 형태의 조건문을 작성할 수 있습니다.

class Program
{
    static void Main(string[] args)
    {
        object obj = "Hello, World!";
        if (obj is string { Length: > 5 } str)
        {
            Console.WriteLine($"String is longer than 5 characters: {str}");
        }
    }
}

with 표현식을 통한 익명 타입 지원

이제 with 표현식을 사용하여 익명 타입을 복사할 수 있습니다.

var person = new { Name = "Alice", Age = 30 };
var olderPerson = person with { Age = 35 };

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine($"Name: {olderPerson.Name}, Age: {olderPerson.Age}");
    }
}

결론

첫 번째 글에서는 C#의 주요 문법 기능들을 소개했습니다. 다음 글에서는 이러한 기능들을 실제 코드 예제와 함께 자세히 설명하겠습니다.

 

반응형