Question: I'm familiar with the System.Numerics.BigInteger class, but in my app, I'm only ever dealing with positive integers. Negative integers are an error case, and it'd be nice if there was an unsigned equivalent of the BigInteger type so I could remove all of these checks. Does one exist?

Answer: 
Well, let's have a look at a simple example

```
        uint a=1;
        uint b=2;
        uint c=a-b;
        Console.WriteLine(c);

```

gives you the output `4294967295` (=2^32-1).

But what if you had an unsigned BigInteger with similar behaviour?

```
        UBigInteger a(1);
        UBigInteger b(2);
        UBigInteger c=a-b;
        Console.WriteLine(c.ToString());

```

What should that be? Of course, from what you wrote one can assume you might expect to get some kind of exception in this case, but such behaviour would not be consistent to `int`. Better introduce the checks for < 0 where you need them, for example, like the way Jon Skeet suggested.
There isn't any support in the framework to declare `BigInteger` as `unsigned`. However, you could create a static method to check if the number is negative or not.

```
public static void ValidateBigIntForUnsigned(BigInteger bigInteger)
{
   if(bigInteger.Sign < 0)
       throw new Exception("Only unsigned numbers are allowed!");
}

```