Announcement

Collapse
No announcement yet.

fehler: nicht alle codepfade geben einen Wert zurück..

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • fehler: nicht alle codepfade geben einen Wert zurück..

    Hallo zusammen

    Ich kriege folg. fehlermeldung:
    CS0161: Functions.ValidatePersonalID(string): Nicht alle Codepfade geben einen Wert zurück.

    an folg. Zeile bleibt es hängen:
    Zeile 212: public static bool ValidatePersonalID(string strPID)




    Code:
        public static bool  ValidatePersonalID(string strPID)
        {
            bool strErrorPID = false;
    
            if (String.IsNullOrEmpty(strPID))
                throw new ArgumentNullException("Personal ID");
    
            for (int i = 0; i < strPID.Length; i++)
            {
                char ch = strPID[i];
                UnicodeCategory uc = Char.GetUnicodeCategory(ch);
                switch (uc)
                {
                    case UnicodeCategory.UppercaseLetter:
                    case UnicodeCategory.LowercaseLetter:
                    case UnicodeCategory.DecimalDigitNumber:
                    case UnicodeCategory.DashPunctuation:
                    case UnicodeCategory.ConnectorPunctuation:
                        break;
                    default:
                        return strErrorPID = true;
                        break;
    
                }
            }
        }
    Fehlermeldung ist mir zwar klar, jedoch sehe ich nicht, was ich im code falsch habe... kann mir da jemand helfen??

    DANKE
    Zuletzt editiert von mavebox; 11.03.2009, 18:03.

  • #2
    Hallo,

    es fehlt eine return-Anweisung im Zusammenhang mit der throw-Anweisung (das geht natürlich nicht anders, aber der Compiler stöhnt) und in den normalen case-Zweigen.

    Vernünftige Lösung (die regelt auch das Problem mit throw): Innerhalb der Methode wird niemals return verwendet, sondern nur eine result-Variable, bei Dir strErrorPID, der jeweils ein passender Wert zugewiesen wird; erst ganz am Ende kommt eine Anweisung "return strErrorPID;".

    Jürgen

    PS. Bitte korrigiere den ersten Beitrag durch "Editieren", es fehlt eine öffnende Klammer vor Code. Wieso fällt so etwas bloß nicht auf vor dem Abspeichern? Es gibt doch die Vorschau!

    Comment


    • #3
      Hallo,

      der Parser hat recht. Du gibst nur im Default-Zweig des switch-Statements etwas zurück. In den anderen Cases und nach dem Switch nicht.
      Entweder Du baust ein Return mit Bool-Wert in jeden Case des switch oder besser ans Ende der Prozedur nach dem switch.

      Ich würde strErrorPID im switch auf den jeweils gewünschten Wert ändern und am Ende ein return strErrorPID machen.

      Gruß, Bruno

      Comment

      Working...
      X