Какой тип конструктора / метода используется здесь?

#c# #methods #constructor #c#-3.0 #complex-numbers

Вопрос:

Я искал способ вычисления сложения комплексных чисел и видел этот пример, но есть часть, которую я не понимаю. это весь код для этого класса:

   class Complex
    {


       public  int real, imaginary;

        public Complex()
        {

        }

        public Complex(int tempReal , int tempImaginary)
        {
            real = tempReal;
            imaginary = tempImaginary;
        }

        public Complex addComp(Complex C1 , Complex C2)
        {
            Complex temp = new Complex();
            temp.real = C1.real   C2.real;
            temp.imaginary = C1.imaginary   C2.imaginary;

            return temp;

        }


}
 

Та часть, где это написано :

  public Complex addComp(Complex C1 , Complex C2)
 

Мой вопрос в том, во-первых, является ли это конструктором или методом? и мой следующий вопрос: почему за addComp написано Complex? как это возможно и какой в этом смысл?

Комментарии:

1. addComp-это метод, который возвращает объект типа Complex и принимает два комплексных параметра: C1 и C2

2. Я бы сделал addComp статичным, потому что там не используются текущие данные экземпляра.

Ответ №1:

addComp это метод, но очень плохо написанный!

Наблюдения:

  • addComp должно быть либо static и принимать два параметра, либо быть не — static и принимать один; метод экземпляра не должен игнорировать this значение, в большинстве случаев
  • addComp почти наверняка должен быть двоичный оператор, который был бы static в приведенном выше сценарии (C# позволяет перегружать многие операторы, в том числе )
  • Complex вероятно , должно быть a readonly struct , а не a class — с подходящими операторами и перегрузками, поддержкой IEquatable<Complex> и т. Д
  • real и imaginary должны быть свойствами, а не общедоступными полями