예제 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을 사용해 볼 텐데 사용법은 다음과 같다.