Code Teile auslagern
-
Hi Leute!
Ich hab ein Problem.
Ich will einzelne Methoden in einer extra Datei unterbringen, um die Datei an andere Leute weiter zu geben, die dann die Methoden nutzen können.
Ich hab es schon mit einer Klasse probiert, aber irgendwie funktioniert es nicht.Ist auch naheliegend
, weil man in einer Klasse ja egtl. Objekte mit ihren Methoden und nicht nur allgemeine Methoden unterbringt.
Thx for help, Darius.
-
Hallo,
suchst du das Schlüsselwort "static"? Damit man Methoden direkt über den Klassennamen aufrufen kann, anstatt ein Objekt anlegen zu müssen. Für eine Helper-/Utility-Klasse kannst du auch die gesamte Klasse als static deklarieren (dann können davon keine Objekte erzeugt werden).
-
"Irgendwie funktioniert es nicht" ist keine ausreichende Fehlerbeschreibung.
Was hast du versucht und was funktioniert nicht (Fehlermeldung/Punkt wo du nicht mehr weiter weist/...)?
-
Was für Methoden sollen das sein? Ich tippe mal auf eine Sammlung von Berechnungsmethoden. Dafür nimmst du eine sogenannte statische Klasse ohne Konstruktor und alles 'public static' modifiziert. Dafür braucht man keine Objekte, nur den Klassenamen. Also etwa RechteckFlaeche = Doedel.RechteckFlaeche(breit, hoch). Den Code stellst du in diesem Beispiel als die erzeugte Datei Doedel.cs bereit.
-
hustbaer schrieb:
"Irgendwie funktioniert es nicht" ist keine ausreichende Fehlerbeschreibung.
Was hast du versucht und was funktioniert nicht (Fehlermeldung/Punkt wo du nicht mehr weiter weist/...)?Ich hab die Methoden in eine Klasse mit dem Code
public class Doedle { ... }
^^ Beispiel
gepackt. Ich konnte sie dann nicht so wie es, nach meinen schlechten Kentnissen, sein sollte mit:
Beispiel:
Doedle.MethodenName(Meine Argumente);
aufrufen.
An euch alle:
Wie der Titel schon sagt: Danke schonmal ich werd' gleich mal bischen mein Gehirn bemühenund versuchen das zu verwerten.
-
berniebutt schrieb:
Ich tippe mal auf eine Sammlung von Berechnungsmethoden.
Ich weiß nicht genau, was du damit meinst, aber es sind 2 Methoden die eine Datei zeilenweise in eine ArrayList laden, anschließend verarbeiten und wieder speichern.
PS: Hat jemand mal ein Beispiel, wie dann das Gerüsst so einer Klasse mit static aussähe oder so... Bin nicht der beste Programmierer und manches ist für mein Pubertätsgehirn auch einfach zu Groß...
Danke wieder im Voraus, Darius.
-
die Klasse und Datei Doedle.cs public static class Doedel { public static double addiere(double z1, double z2) { double summe; summe = z1 + t2; return summe; } }
Der Aufruf der Funktion .... double summe; summe = Doedel.addiere(1.00, 2.25); ...
-
Supi. Danke, Bernibutt.
<< Der hat heute aber auch nicht seinen ersten Joint geraucht, der Smiley.
Aber ich möchte keine Methode, die etwas zurückgibt, sondern eine Aktion ausführt. Daher hatte ich das Wort double entfernt. Darauf hin motzte Visual Studio: "Die Methode hat keinen Rückgabewert".Ich möchte einfach an die Methode einen Text übergeben:
KlassenName.Registrate("Hallo Welt")
Die Methode soll diesen dann als String "Name übernehmen".
Mein Code für die Methode:
public static Registrate(string Name) { //Aktionen ausführen(Datei lesen, ändern, schreiben) }
Und Danke zur Abwechslung wieder im Voraus, Darius.
-
void, nimm void...
public static class Doedel { public static void addiere(double z1, double z2) { Console.WriteLine("{0}", z1 + z2); } }
-
Supi. Gleich am ersten Tag durchgekämpft.
Also nochmal vielen Dank an euch alle.
Und wenn ich morgen noch Zeit hab, poste ich nochmal wie mans jetzt am besten macht als Zusammenfassung für andere Leute, die das gleiche Problem haben.PS: Gute Nacht!
Edit: Die Zusammenfassung findet Ihr ab Heute/29.11. auf -Seite 2-
-
Hier für nachfolgende Leser die angekündigte Zusammenfassung.
Beispiel für eine statische Klasse mit Methoden, die aus dem "Hauptcode" gestartet werden sollen:
//Einbinden benötigter namespaces/Bibliotheken using System.IO; using System.Windows.Forms; // Gerüsst mit Klassenname public static class MeineKlasse { // Deklarieren von Variablen public static string line; // Methoden public static void LoadFile(string fileName) { using (StreamReader File = new StreamReader(fileName)) { while((line = File.ReadLine()) != null) { MessageBox.Show(line); } } } }
Aufrufen der Beispielmethode:
MeineKlasse.LoadFile("file.txt");
-
Schau Dir mal die System.IO.File.ReadAllLines(fileName) an.
-
Umständlich schrieb:
Schau Dir mal die System.IO.File.ReadAllLines(fileName) an.
Wozu das und was bringt einem das dann?
War in dem Fall ja nur ein Beispiel. Es geht in meinem Fall genau darum, die Datei zeilenweise auszulesen und dann - in meinem Fall - in einer ArrayList zu speichern, um die Zeilen einzeln abrufen zu können.Schließlich hat SteamReader ja auch eine Funktion Read(); und ReadBlock();
Also alles was das Her begehrt.Trotzdem Danke.
Und hat jemand 'ne Idee, wie ich die Klasse anpassen könnte, für Leute, die das Bedürfnis haben in C++ zu programmieren? Dann also als *.cpp-Datei.
Wieder Danke, Darius.
Edit: Bitte nicht verschieben. Ist ja hauptsächlich eine C# Angelegenheit. Ansonsten frag ich halt nochmal im C++ Bereich.