Сравнение BigInteger и int, short в C#

86
12 июля 2021, 15:10

Пытаюсь разобраться в принципе работы... На примере:

        BigInteger bnum = BigInteger.Parse("2443534553434233455436465677687669784354423324");
        int intnum = 131;
        Console.WriteLine(bnum > intnum); //true

Как происходит сравнение int, short, ushort и т.д. переводятся в тип long, который прописан в System.Numerics.

    public static bool operator >(BigInteger left, long right);
    public static bool operator >(BigInteger left, BigInteger right);

или всё таки эти типы преобразуются в BigInteger. И как вся эта магия происходит?

Спасибо!

Answer 1

Пример класса с оператором преобразования и сравнения

class MyClass 
{
    private int _initial;
    public MyClass (int initial) => _initial = initial;
    public static implicit operator MyClass(int v) => new MyClass(v);   
    public static bool operator < (MyClass l, MyClass r) => l._initial < r._initial;
    public static bool operator > (MyClass l, MyClass r) => l._initial > r._initial;
}

Как использовать

var mc = new MyClass(1000);
Console.WriteLine(mc < 10);
Console.WriteLine(mc > 10);

Пример класса с перегруженными операторами сравнения

class MyClass 
{
    private int _initial;
    public MyClass (int initial) => _initial = initial;     
    public static bool operator < (MyClass l, long r) => l._initial < r;
    public static bool operator > (MyClass l, long r) => l._initial > r;
}

Использовать можно точно также

var mc = new MyClass(1000);
Console.WriteLine(mc < 10);
Console.WriteLine(mc > 10);
READ ALSO
Целесообразность класса для работы с БД MSSQL

Целесообразность класса для работы с БД MSSQL

Создал специальный вспомогательный класс для соединения и работы с БД

70
Как реализовать программу?

Как реализовать программу?

Прошу помощи в разработке программы, оригинал на паскале написан и на 32/64 не переписать его и не запустить (досбоксы и тому подобное не подходит)Надо...

94
Ошибка в запросe (1054): Unknown column &#39;g.RomNo&#39; in &#39;field list&#39;

Ошибка в запросe (1054): Unknown column 'g.RomNo' in 'field list'

Ошибка в запросe (1054): Unknown column 'gRomNo' in 'field list'

90
Bash - mysql: Error reading file &#39;UNOPENED&#39;

Bash - mysql: Error reading file 'UNOPENED'

Пытаюсь написать скрипт, который реализует удаленный вход на mysql сервер и делает там запрос, затем выводит это все в файл, но при запуске скрипта...

101