고정 크기 버퍼는 C#에서 일반적으로 사용되는 것은 아니지만, 성능이 중요한 시나리오나 특정 메모리 레이아웃이 필요할 때 유용합니다. 고정 크기 버퍼를 사용하려면 코드를 unsafe로 표시해야 합니다. 이는 포인터 연산이 가능한 영역이므로 주의가 필요합니다.
아래는 고정 크기 버퍼의 사용 예제입니다:
using System;
public struct FixedBufferExample
{
// 고정 크기 버퍼 정의. 이 버퍼는 100개의 int 값을 저장할 수 있습니다.
public unsafe fixed int buffer[100];
}
public class Program
{
public unsafe static void Main()
{
FixedBufferExample example = new FixedBufferExample();
// 고정 크기 버퍼에 접근하기 위해 fixed 문 사용
fixed (int* p = example.buffer)
{
// 처음 5개 원소에 값 할당
for (int i = 0; i < 5; i++)
{
p[i] = i * i; // 제곱 값을 저장
}
// 처음 5개 원소 출력
for (int i = 0; i < 5; i++)
{
Console.WriteLine(p[i]);
}
}
}
}
이 코드를 실행하면 0, 1, 4, 9, 16의 값을 출력합니다.
이 예제에서 FixedBufferExample 구조체는 100개의 정수 값을 저장할 수 있는 고정 크기 버퍼를 정의합니다. 메인 함수에서 이 버퍼의 첫 5개 원소에 값을 할당하고 출력합니다.
고정 크기 버퍼와 unsafe 코드는 C#에서 일반적으로 권장되지 않는 기능이므로, 필요한 특정 시나리오에서만 사용해야 합니다. unsafe 코드는 기본적으로 안전하지 않다고 판단되기 때문에, 사용할 때 주의가 필요합니다.
'워크 > C# 2.0' 카테고리의 다른 글
부분 타입 (Partial Types) (0) | 2023.08.25 |
---|---|
Covariance와 Contravariance (0) | 2023.08.25 |
반복자 (Iterators) (0) | 2023.08.25 |
익명 메서드 (Anonymous Methods) (0) | 2023.08.25 |
Nullable 타입 (0) | 2023.08.25 |