У меня есть набор кода, который имеет много целых чисел с различными значениями (я бы предпочел общее решение, но для конкретного примера: день месяца против месяца года против года и т. Д. .). Я хочу иметь возможность перегружать конструктор класса на основе этих значений.
Например
int a; // takes role A
int b; // takes role B
var A = new Foo(a); // should call one constructor
var B = new Foo(b); // should call another constructor
Теперь ясно, что это не сработает, но если бы я мог определить тип (не просто псевдоним), который во всех именах будет int
, кроме имени:
typedef int TypeA; // stealing the C syntax
typedef int TypeB;
Я мог бы выполнить необходимую мне перегрузку и позволить системе типов отслеживать, что есть что. В частности, это позволило бы мне быть уверенным, что значения не перепутаны, например, значение, возвращаемое функцией, поскольку год не используется в качестве дня месяца.
Есть ли способ обойтись без class
или struct
обёрток, чтобы сделать это в c #?
Было бы неплохо, если бы решение также работало для чисел с плавающей и двойной чисел.