myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   c# operator überladen (https://mygully.com/showthread.php?t=2357566)

Dergecko911 05.07.11 22:37

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! :)

slahn 06.07.11 18:38

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.

urga 06.07.11 19:41

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)

sirleo 06.07.11 21:22

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 und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] keine 5min suchen,zB mit BING^^.

Pillewutz 06.07.11 22:03

@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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.