myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

c# operator überladen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 05.07.11, 22:37   #1
Dergecko911
Erfahrener Newbie
 
Registriert seit: Sep 2009
Beiträge: 95
Bedankt: 16
Dergecko911 ist noch neu hier! | 0 Respekt Punkte
Standard c# operator überladen

Ein kleine grundlegende Sache die ich nicht ganz verstehe:

Code:
        public static string operator +(string msg_a, string msg_b)
        {
            List<char> a_list = new List<char>();
            foreach (char a in msg_a)
            {
                
                a_list.Add(a);
            }
            List<char> b_list = new List<char>();
            foreach (char b in msg_b)
            {
                b_list.Add(b);
            }
            string ausgabe = null;

            for (int i = 0; i <= b_list.Count; i++)
            {
                ausgabe += b_list[i].ToString() + a_list[i].ToString();
            }
            return ausgabe;
            }
}
der code ist nur als beispielcode gedacht.
Fehler:

Error 1 One of the parameters of a binary operator must be the containing type

Hoffe das liest bis morgen jemand!
Danke!
__________________
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Dergecko911 ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 18:38   #2
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

Ich habe zwar wenig ahnung von C#, aber in C++ kann man für den ersten Parameter nur ein Objekt der eigenen Klasse verwenden. Die einzige Ausnahme bilden Globale-friend-Funktionen. (als Bsp.: irgendwas = einKlassenobjekt + nochirgendwas, das geht aber nur als friend-Funktion: irgendwas = nochirgendwas + einKlassenobjekt)

Aber wie weit das jetzt auf C# zutrifft, weiß ich nicht aber möglicherweise hilft es ja weiter.

versuch mal den Parameter "string msg_a" auf "static string msg_a" zu ändern, möglicherweise hilft das ja schon.
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 19:41   #3
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

ich habe jetzt keinen bock das auszuprobieren, aber probier mal String mit großem S.
oder probier mal den operator * zu verwenden. ein + auf strings gibts nämlich schon.
evntl. auch public override static String operator +(String msg_a, String msg_b)
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 21:22   #4
sirleo
is poking \\Device\\Beep
 
Registriert seit: May 2011
Beiträge: 201
Bedankt: 84
sirleo ist noch neu hier! | 0 Respekt Punkte
Standard

Das kannst du so nicht machen.
Du bist nicht in C++.
Wenn du einen Operator überlädst dann musst du dies in der Klasse für die der Operator angewandt werden soll tun.

hier ein kleines beispiel:



kannst natürlich auch einen beliebigen anderen Datentyp zurrückgeben zB int.
ABER der Operator MUSS in der Klasse überladen werden.
mfg

sirleo

P.s.:Suchen hilft [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] keine 5min suchen,zB mit BING^^.
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
sirleo ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 22:03   #5
Pillewutz
Banned
 
Registriert seit: Jun 2011
Beiträge: 62
Bedankt: 40
Pillewutz ist noch neu hier! | 0 Respekt Punkte
Standard

@DerGecko...

Mann, mann, mann...

Ein typischer Beitrag hier:
- schlecht formulierte Frage
- unvollständige Angaben
- unfähig selbst zu suchen und finden

Warum versucht man sich dann an einer Programmiersprache?
Pillewutz ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.


Sitemap

().