C#에서 표현 가능한 최대 정수형은 8바이트(2^26) long 형으로
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 범위의 값을 갖는다. 일반적인 환경에서는
이 정도 범위로 충분하겠지만 암호화 같은 분야에서는 천문학적인 숫자를 다루므로 다른 방법을
찾아야 한다. BCL에서는 이 요구에 맞춰 닷넷 4.0부터 BigInteger 구조체 타입을 추가했고 사용법도
일반적인 in/long 형과 유사하다.
static void Main(string[] args)
{
BigInteger int1 = BigInteger.Parse("12345678901234567890");
BigInteger int2 = BigInteger.Parse("98765432109876543210");
Console.WriteLine(int1 + int2);
}
위의 코드를 실행하려면 System.Numerics 어셈블리를 참조로 추가해야 한다. 특이하게 초기화를
위해 숫자를 문자열로 대체해서 BigInteger.Parse 메서드를 호출하고 있다. 왜냐하면 C# 코드에서
사용되는 숫자형 리터럴로는 여전히 64비트로 제한돼 있기 때문에 BigInteger 타입을 초기화하려면
문자열을 사용해야 한다. 만약 long 형 범위의 숫자라면 BigInteger에 그대로 대입하는 것도 가능하
다.
BigInteger int3 = 9223372036854775807;