Как реализовать однострочный экземпляр класса
Помогите, реализовать этих 4 экземпляра класса в однострочный экземпляр класса
MyComplex A = new MyComplex(1, 1);
MyComplex B = new MyComplex();
MyComplex C = new MyComplex(1);
MyComplex D = new MyComplex();
Я знаю, что можно как-то сделать в C# так, но не понимаю как
MyComplex A(1,1), B, C(1), D;
Ответы (3 шт):
Автор решения: Igor
→ Ссылка
(var A, var B, var C) = (new MyComplex(1, 1), new MyComplex(), new MyComplex(1));
Автор решения: Exploding Kitten
→ Ссылка
В C# 9.0 можно написать так, при условии, что есть подходящие конструкторы:
MyComplex A = new (1, 1), B = new (), C = new (1), D = new ();
Автор решения: Alexander Petrov
→ Ссылка
Можно перегрузить операторы преобразования.
Кортеж из двух чисел или одно число неявно конвертируем в наш класс (или структуру).
public class MyComplex
{
private int _x;
private int _y;
public MyComplex(int x) : this(x, 0) { }
public MyComplex(int x, int y) => (_x, _y) = (x, y);
public static implicit operator MyComplex(int x) => new MyComplex(x);
public static implicit operator MyComplex((int x, int y) v) => new MyComplex(v.x, v.y);
public override string ToString() => $"{_x}, {_y}";
}
Тогда становится возможной следующая запись.
MyComplex A = (1, 1), B = (2, 2), C = 3, D = (0);