Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   C# Nicht alle Codepfade geben einen Wert zurück. (https://www.delphipraxis.net/64332-nicht-alle-codepfade-geben-einen-wert-zurueck.html)

Luckie 2. Mär 2006 10:18

Datenbank: db4o • Zugriff über: db4o API

Nicht alle Codepfade geben einen Wert zurück.
 
Ich habe folgende Klasse:
Code:
namespace Demo_db4o
{
    class Queries
    {
        private ObjectContainer oc;

        public Queries(ObjectContainer db)
        {
            oc = db;
        }

        public IList<Person> OlderThan(Int32 Alter)
        {
            IList<Person> personen = oc.Query<Person>(delegate(Person person)
            {
                return person.Alter > Alter;
            });
        }
    }
}
Dort gibt es die Methode OlderTahn, die mir eine Liste aller Personen zurückgibt die älter als ein bestimmtes Alter sind. Dies wird über ein Query realisiert. Jetzt sagt mir aber der Compiler:
Zitat:

Nicht alle Codepfade geben einen Wert zurück.
Klar, der hat gemerkt, dass wenn kein passender Datensatz gefunden wird, keine Rückgabe erfolgt.

Jetzt bin ich mir nicht so ganz sicher, ob das ein sprachliches Problem ist oder eher ein Datenbank Problem. Aber was auch immer es ist, wie löse ich das am besten?

Luckie 2. Mär 2006 10:41

Re: Nicht alle Codepfade geben einen Wert zurück.
 
Nachtrag

Ich habe es jetzt so gelöst:
Code:
        public IList<Person> OlderThan(Int32 Alter)
        {
            IList<Person> result;

            //IList<Person> personen = oc.Query<Person>(delegate(Person person)
            result = oc.Query<Person>(delegate(Person person)
            {               
                return person.Alter > Alter;              
            });
            return result;
        }
Ist dagegen was einzuwenden? Oder gibt es eine bessere Lösung?

MathiasSimmack 2. Mär 2006 11:09

Re: Nicht alle Codepfade geben einen Wert zurück.
 
Die Fehlermeldung war bzw. ist auf jeden Fall ein Sprachproblem, weil du mit dem benutzten "return" ja nur die IList gefüllt hast. Die Funktion selbst lieferte nichts zurück. Ich hatte beim Testen bspw. hiermit keine Probleme:
Code:
public IList<Person> OlderThan(int Alter)
{
   IList<Person> personen=
      oc.Query<Person> (delegate(Person person) { return person.Alter > Alter; });
   return personen;
}

Luckie 2. Mär 2006 11:55

Re: Nicht alle Codepfade geben einen Wert zurück.
 
Jupp geht. Dank dir. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz