Return gibt falschen Wert zurück

  • C#

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von Carbdrox.

    @ErfinderDesRades Jou.
    @Carbdrox Lass Dir im Studio einfach alle Zugriffe auf label22.Text anzeigen, setze auf jeden Schreibzugriff einen Haltepunkt und feddich. 8o
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So, zunächst einmal vielen Dank! :D
    hab's Problem ausfindig gemacht:
    und zwar hatte der Return Wert am ende den Richtigen Wert, da ich aber die Funktion veranlasst habe sich selber aufzurufen, um den Wert "type zu ändern", falls der String nicht vorhanden ist, ist der Return wert "-1" wenn nicht beim ersten versuch der richtige String gefunden wird ( irgendwie klingt das jetzt ein wenig wirr :whistling: )

    C#-Quellcode

    1. if (found == -1)
    2. {
    3. if (type == 0)
    4. {
    5. gametype(strS, 1);
    6. }
    7. else if (type == 1)
    8. {
    9. gametype(strS, 2);
    10. }
    11. else
    12. {
    13. gametype(strS, 0);
    14. }

    Also aufgrund dieser If schleife hat das Label einen falschen Wert angezeigt.


    Ich hab es jetzt umgeschrieben glaub aber das das recht unsauber ist oder ?

    C#-Quellcode

    1. public string gametype(string strS)
    2. {
    3. int found = 0;
    4. int type = 0;
    5. string strTarget = "\"game_type\" = \"" + type + "\"";
    6. string gt = "-1";
    7. for (int i = 0; i < strS.Length; i++)
    8. {
    9. found = strS.IndexOf(strTarget, i);
    10. if (found != -1)
    11. {
    12. gt = type.ToString();
    13. break;
    14. }
    15. else
    16. {
    17. type = 1;
    18. strTarget = "\"game_type\" = \"" + type + "\"";
    19. for (int j = 0; j < strS.Length; j++)
    20. {
    21. found = strS.IndexOf(strTarget, j);
    22. if (found != -1)
    23. {
    24. gt = type.ToString();
    25. break;
    26. }
    27. }
    28. }
    29. }
    30. return gt;
    31. }
    Da hast du recht das ist eig echt quatsch wollte ursprünglich wissen wo der gesuchte String anfängt und hatte das in der MS Dokumentation so verstanden :huh:

    C#-Quellcode

    1. ​public string gametype(string strS)
    2. {
    3. int found = 0;
    4. int type = 0;
    5. string strTarget = "\"game_type\" = \"" + type + "\"";
    6. string gt = "-1";
    7. found = strS.IndexOf(strTarget);
    8. if (found != -1)
    9. {
    10. gt = type.ToString();
    11. }
    12. else
    13. {
    14. type = 1;
    15. strTarget = "\"game_type\" = \"" + type + "\"";
    16. found = strS.IndexOf(strTarget);
    17. if (found != -1)
    18. {
    19. gt = type.ToString();
    20. }
    21. }
    22. return gt;
    23. }
    naja, mit IndexOf wärs grad ebenso gegangen:

    C#-Quellcode

    1. public string gametype(string strS) {
    2. for (var type = 0; type < 3; type++) {
    3. if (strS.IndexOf("\"game_type\" = \"" + type + "\"")>=0) return type.ToString();
    4. }
    5. return "-1";
    6. }


    Carbdrox schrieb:

    ob ".Contains" in C# auch funktioniert
    also wenn du mit "auch" die Sprache Vb.Net mit c# vergleichen willst: Da isses so, dass alles, was in vb.net geht, auch in c# funktioniert.
    Weil beide Sprachen verwenden dasselbe Framework, wo die ganzen Methoden und Klassen drinne sind.

    (Darüber hinaus bindet vb.net noch einigen grauenhaften Unfug ein - den Microsoft.VisualBasic - Namespace, aber den sollte man eh nie nie nie verwenden)
    Okay :D

    Ja das ist mir grundsätzlich klar gewesen aber kp in dem Moment nicht drüber nachgedacht :D

    Eben das ist der Grund warum ich jetzt C# angefangen habe ist halt doch mehr "Programmieren" bei VB ist es ja iwie echt so, dass man viel "falsch" oder vllt. besser unvollständig schreiben kann und das aber trotzdem funktioniert xD
    seh ich nicht so.
    Also wenn man Option Strict On hat, und den GeneralImport des DeppenNamespaces rausgeschmissen hat, dann ist vb.net c# absolut ebenbürtig.
    Beide Sprachen haben so ihre Stärken, und aufs ganze gesehen, sind die Unterschiede eiglich marginal.

    richtig programmieren musste so oder so lernen, und wennde vb.net richtig proggst, dann kannste auch c# und umgekehrt.

    dazu gehört halt ein Haufen Grundlagen, und natürlich debuggen muss man können, und die Dokumentation recherchieren.
    Wofür man wieder die Grundlagen braucht, denn sonst versteht man die Doku überhaupt nicht.

    also für vb.net proggen lernen hab ich mal was zusammengestellt: Datenverarbeitungs-Vorraussetzungen
    Bis auf punkt#1 gilt das ebenso für c#.
    ja okay dann ist das ja auch was andres :D (wollte die Sprache jetzt nicht schlecht reden oder so)
    meinte nur so einfach Visual Studio öffnen und dann VB drauf los Programmieren das finde ich ist halt anders :D
    Im Endeffekt stimm ich dir zu ich mein wenn man einmal Programmieren kann ist es ein vielfaches einfacher andere Sprachen zu lernen. Ich wusste nur nicht das C# und VB sich so arg ähnlich sind.