myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Was genau bedeutet: "Der bedingte Operator kann nicht überladen werden."?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Was genau bedeutet: "Der bedingte Operator kann nicht überladen werden."?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
mchrd mchrd ist männlich
myCSharp.de-Mitglied

avatar-229.gif


Dabei seit: 27.10.2018
Beiträge: 17
Entwicklungsumgebung: Visual Studio 2017, VS Code


mchrd ist offline

Was genau bedeutet: "Der bedingte Operator kann nicht überladen werden."?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich lerne zur Zeit C#. Jetzt habe ich auf  dieser Microsoft-WebseiteSeite folgenden Satz zum tenär bedingten Operator gelesen:

Zitat:
Der bedingte Operator kann nicht überladen werden.

Was bedeutet dies?
Ich habe dann weitergeschaut um es selbst herauszufinden und bin auf den Microsoftseiten noch auf  overloadable-operators und  operator gekommen. Leider halfen mir beide Webseiten nicht.


Ich kenne überladen bisher nur als Begriff, dass man einer Methode etwas überlädt (also z. B. Werte mitgibt).

Könnt ihr mir ggf. ein Beispiel geben und erklären was man darunter verstehen soll?

Danke!
01.11.2018 20:24 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.350
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Steht doch bei deinem Link zum Thema operatoren dabei.
Du kannst in deiner Klasse bestimmte Operatoren überladen um bestimmte Funktionen damit abzubilden.
So kannst du eben wie bei String aus zwei Instanzen mit dem + Opertor eine dritte Instanz bilden.
Dabei werden die internen Werte der beiden Instanzen zusammengefügt.

In .NET gibt es einige Beispiele für Operatoren Überladungen.
Z.b. die BigInteger Klasse zum abbilden von großen Zahlen nutzt dies ebenfalls um darüber die Instanzen entsprechend zu berechnen.

Ist für den Anfang aber noch ein zu großes Thema, lern lieber erst einmal Allgemeines über C# und OOP.
Später kommt das Thema von allein noch dazu bei den fortgeschrittenen Themen.
Die meisten Lehrbücher greifen dann auch gern wieder zur String Klasse um ein Beispiel zu haben. :)

T-Virus
01.11.2018 20:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.166
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es gibt eben Operatoren, die können überladen werden - und welche die können nicht überladen werden.

Das Überladen von Operatoren verwendet man nur sehr sehr selten; vereinfacht an manchen Stellen aber den Code.

Wenn man eine eigene Klasse definiert hat (zB. "Dauer") die eine Dauer repräsentiert, kann man zum Beispiel den Operator "+" überladen, sodass zwei Objekte addiert werden können.

C#-Code:
public class Dauer
{
  public Dauer (int minuten)
  {
      Minuten = minuten;
  }

  public int Minuten {get;}

  public static Dauer operator+ (Dauer a, Dauer b)
  {
         var summe = a.Dauer + b.Dauer;
         return new Dauer (summe);
    }
}

Jetzt kann man zB schreiben

C#-Code:
Dauer d1 = new Dauer(7);
Dauer d2 = new Dauer(3);

Dauer d3 = d1 + d2;
// d3 ist nun 10 Minuten

Aber wie gesagt; das braucht man wenn überhaupt nur sehr sehr selten und macht man eher aus dem Grund, dass es einfacher ist zu schreiben.
Gilt als  Syntaktischer Zucker
01.11.2018 20:42 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.350
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

In meine 10+ Jahren mit .NET/C# musste ich nicht einmal einen Operator überladen.
Zwar ist es, wie in Abts Beispiel klar und sinnvoll umgesetzt, ein Vorteil in bestimmten Situationen aber für den Großteil deines Codes wirst du dies schlicht extrem selten bis nie benötigen.

Ich sehe auch in meinem Umfeld, primär Web Entwicklung im Front- und Backend, kaum einen Fall wo ich Operatoren sinnvoll überladen könnte.
Es gibt bestimmte einige Fälle wo dies nicht nur sinnvoll sondern auch aus verständnis Gründen nötig wäre.

Gerade wenn man mit komplexen Strukturen wie z.B. Matrizen arbeitet, ist es sinnvoll wenn diese überladene Operatoren haben um Matrizen direkt zu berechnen ohne auf Verkettungen von entsprechenden Methoden zugreifen zu müssen.

Aber wie gesagt, wirst du vermutlich selten damit was zu tun haben.
Zwar empfehle ich dir, dass Thema sich mal anzuschauen und ggf. auch mal etwas damit rumzutesten aber als Einsteiger solltest du das Thema nach hinten schieben.
Hier gibt es in C# genug andere Sprachmittel die wichtiger und häufiger verwendet werden.

T-Virus
02.11.2018 08:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.166
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Joa aber dann liegt das vielleicht am Umfeld, T-Virus.

Mit den Operatoren kann man schon schöne Dinge machen, um ein hübscheren Syntax zu bekommen.
Es ist gewiss kein Alltagsthema aber beim Schreiben von guten Bibliotheken ist das schon ein sehr praktisches Feature; damit hat man bei solchen Dingen schon öfter zutun - aber eben nicht jeden Tag.
02.11.2018 13:26 Beiträge des Benutzers | zu Buddylist hinzufügen
mchrd mchrd ist männlich
myCSharp.de-Mitglied

avatar-229.gif


Dabei seit: 27.10.2018
Beiträge: 17
Entwicklungsumgebung: Visual Studio 2017, VS Code

Themenstarter Thema begonnen von mchrd

mchrd ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

vielen vielen Dank für die tolle Erklärung! Ich denke ich persönlich werde Überladungen (wenn überhaupt) sehr selten benötigen.

Ich wünsche euch einen schönen Tag!
08.11.2018 08:16 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 13.11.2019 01:49