Announcement

Collapse
No announcement yet.

Point.operator+ überladen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Point.operator+ überladen

    Hallo Experten,

    ich möchte gern zwei Punkte addieren und zu diesem Zweck den operator + für System.Drawing.Point überladen.[highlight=c#]
    public static System.Drawing.Point operator +(System.Drawing.Point pt0, System.Drawing.Point pt1)
    {
    return (new System.Drawing.Point(pt0.X + pt1.X, pt0.Y + pt1.Y));
    }[/highlight]- In welchem Namespace,
    - in welcher Klasse und
    - mit welchen Schlüsselwörtern kann ich das so unterbringen, dass es funktioniert?

    Ciao,


    luker

  • #2
    Hallo,

    mit welcher NET-Version arbeitest Du? Mit den Extension-Methods von 3.0 oder 3.5 geht es wohl direkter als unter 2.0.

    Als Namespace ist System.Drawing möglich, aber nicht zu empfehlen (Du weißt nicht, was MS in der nächsten NET-Version ändert). Besser ist etwas wie Luker.Drawing, als Klasse etwas wie DrawingExtensions.

    Gruß Jürgen

    Comment


    • #3
      Point gehört zum Framework und kann natürlich nicht direkt geändert werden.
      Da Point ein struct ist gibts auch kein Polymorphismus. Du kannst also nicht einfach von Point ableiten und in der Ableitung den Operator hinzufügen.

      Die einzige Möglichkeit die ich sehe wäre wohl eine Extension Method(ab c#3.0/VS2008). Das geht aber nur mit Methoden und nicht mit Operatoren.
      Du könntest also ein Add Methode hinzufügen die das ensprechende vollbringt.

      Dann hättest du aber auch nur dasselbe was die Offset Methode schon längst macht.

      Code:
         Point1.Offset(Point2);
      Übrigens finde ich dein Vorhaben eher falsch. Die Addition zweier Punkte macht logisch keinen Sinn (programmatisch mag das nett aussehen) da das eigentlich keinen neuen Punkt ergibt(Mathematisch - in der Informatik macht man das trotzdem oft so weil man einfach ein gemeinsames Koordinatensystem mit gleichem Ursprung annimmt und damit eigentlich implizit von Strecken ausgeht und nicht von Punkten).
      Nur ein Punkt plus eine Strecke ergibt einen Punkt.

      Comment


      • #4
        Ich arbeite in .NET 2.0.

        Mit den vorgeschlagenen Klassen/Namespaces gibts eine Fehlermeldung mit unterwelltem operator +:
        "Einer der Parameter muss der enthaltenen Typ sein"

        Comment


        • #5
          Originally posted by Ralf Jansen View Post
          Point gehört zum Framework und kann natürlich nicht direkt geändert werden.
          Ok, dann schreibe ich halt jeweils die Zeile und warte mit der Operatorüberladung bis sich ein besseres Beispiel ergibt.

          Danke für die Ausführliche Erläuterung der Zusammenhänge.

          Comment


          • #6
            Danke, Ralf, für diesen Hinweis:
            Originally posted by Ralf Jansen View Post
            Da Point ein struct ist gibts auch kein Polymorphismus. Du kannst also nicht einfach von Point ableiten und in der Ableitung den Operator hinzufügen.
            Soweit hatte ich nicht gedacht. (Mit Graphic-Elementen arbeite ich sehr selten; deshalb war das nicht im Kopf parat.)

            Sorry, Luker, dass ich Dich auf die falsche Fährte gelockt habe. Jürgen

            Comment

            Working...
            X