2016-02-18 2 views
0

Я пытаюсь перенести некоторый код C# на другой язык (C# не является моим обычным языком).Перегрузка сложения оператора C#

У меня есть вектор класса (cpVect), который переопределяет оператор «+» дважды:

public static cpVect operator +(cpVect p1, cpVect p2) 
    { 
     return new cpVect(
      p1.x + p2.x, 
      p1.y + p2.y 
      ); 
    } 

    public static cpVect operator +(cpVect p1) 
    { 
     return new cpVect(
      +p1.x, 
      +p1.y 
      ); 
    } 

Я могу видеть, что новый экземпляр cpVect возвращается из обоих методов, но я пытаюсь выяснить, как можно было бы назвать эти методы в примере кода (поэтому я могу убедиться, что правильно их портирую). Например, добавляет ли второй метод p1 к получающему cpVect?

v3 = v1 + v2 <-- does this call method one above? 
v1 = v1 + v2 <-- does this call method two above? 

Благодаря

+0

Как в стороне, сейчас самое время узнать о соглашениях об именах .NET и применить их к вашему коду. Также обратите внимание, что вы не * переопределяете * что угодно - вы перегружаете * операторы. –

+0

Точка взята - я имел в виду перегрузку :) – Garry

ответ

4

И вызовите двоичную оператора. унарный оператор будет называться, если у вас только один операнд:

v3 = +v1; 

унарный оператор + редко бывает полезным, если честно - но это в основном там для симметрии с одноместной - оператора.

+0

Забыл о унарном операторе. На языке, на котором я портирую (Xojo), нет ни одного. Благодарю. – Garry

Смежные вопросы