Там нет ничего в рамках, нет.Я бы попытался централизовать проверки как можно меньшего размера общедоступного API, а затем обработать данные как действительные в течение остального времени - так же, как и для чего-то вроде нулевой проверки.Конечно, вам все равно нужно быть осторожным, если вы выполняете какие-либо операции, которые могут создать отрицательное значение (например, вычитать одно из другого).
Вы можете сделать код немного аккуратнеесоздав метод расширения, например,
public static void ThrowIfNegative(this BigInteger value, string name)
{
if (value.Sign < 0)
{
throw new ArgumentOutOfRangeException(name);
}
}
... и используйте его так:
input.ThrowIfNegative("input");
Вы можете потенциально создать свою собственную UBigInteger
структуру, которая содержит BigInteger
и выполнять операции между различными значениями, используя реализацию и проверки BigInteger
, но я подозреваю, что это будет довольно много работы для сравнительно небольшой выгоды, и может иметь влияние на производительность, если вы используете егодля многих расчетов.