더북(TheBook)

예제 13-20 char[]를 사용하여 랜덤 문자열 생성 ▶ GenerateRandomString1.cs

static string Generate(string alphabet, Random random, int length)
{
    char[] chars = new char[length];
    for (int i = 0; i < length; i++)
    {
        chars[i] = alphabet[random.Next(alphabet.Length)];
    }
    return new string(chars);
}

다음은 이 메서드를 이용하여 열 개의 소문자로 구성된 문자열을 생성하는 예다.

string alphabet = "abcdefghijklmnopqrstuvwxyz";
Random random = new Random();
Console.WriteLine(Generate(alphabet, random, 10));

예제 13-20은 char 배열과 문자열을 위해 두 번의 힙 할당을 수행한다. 문자열을 생성할 때는 한 장소에서 다른 장소로 데이터 복사가 이루어지기도 한다. 항상 이처럼 그리 길지 않은 문자열을 생성할 것이라는 가정이 있고 안전하지 않은 코드(unsafe code)를 사용해도 무방하다면, 이 코드를 조금 개선해 볼 수 있다. 이 상황에서는 stackalloc을 사용해 볼 텐데 사용법은 다음과 같다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.