Klausurhilfe :)

dakta

Grünschnabel
Hallo Leute,

Ich brauch mal eure Hilfe bei der C# Klausurvorbereitung ^^

Hier eine Beispiel Aufgabe:


Code:
class Word
    {
        private string co;
        private int len;

        public Word (string cv)
        {
            len = co.Length;
            co = cv;

        }

         
    }
    class Tester
    {
        static void Main()
        {
            string cv = "semesterabschlussklausur SS 2005";
            Word w = new Word(cv);
            int len = w;
            Console.WriteLine(w);
        }
    }

Nun Funktioniert ja die Typumwandlung bei int len = w nicht , ist klar. Meine/Eure Aufgabe ist es jetzt, die Klasse (Nicht die Mainfunktion!) so abzuändern, das diese Typkonvertierung funktioniert. Steckt da irgendeine Teufelei dahinter? Oder isses so einfach das ich nich drauf komme? ich raffs einfach nich ... need help plz..
 
Hi

Ein bisschen muss ich Konstantin recht geben.
Aber zum Thema:
erstens zu der Klasse Word bzw. zu deren Konstruktor
Die Zuweisung des Felds len solltest du nach der der Zuweisung von co machen.
Folge wenn du das nicht machst: NullReferenceException

zweitens zu deinem Problem
Schau dir mal das Thema Properties an. Alternative den Operator = überschreiben, ist aber unschön und vorallem unersichtlich, wenn man einen Reference Type einem build-in Type zuweisen kann, vorallem da sie keinerlei Gemeinsamkeiten haben.
Weitere Altermative wäre die Implementierung einer Methode, die den entsprechenden Wert zurückliefert.
Weiter Alternative, für diese Aufgabe jedoch zu spät: Das nächste Mal in den Vorlesungen besser aufpassen. Ich kann mir nicht vorstellen, dass sowas da nicht behandelt wurde ;)

//EDIT
Mit der Änderung von Konstantin hätten wir dann die 4. Alternative ;)
 
Zuletzt bearbeitet:
Hallo,

diese Benutzerdefinierten Konvertierungen würde ich persönlich niemals in einem Produktiv System verwenden... das ist viel zu undurchsichtig ... dann doch lieber explizit, so dass jeder weis was da passiert.

Also anstatt int value = w; -> int value = w.len;


Gruß Tom
 
Vielen Dank für eure Hilfe das bringt mich weiter :)

Ob es produktiv hin oder her, ist ja erstmal egal. Fakt ist, das solche Aufgaben in einer Klausur dran kamen und man sollte es eben entsprechend modifzieren. Ich wollte nur vorbereitet sein :)
 

Neue Beiträge

Zurück