Not all code path return a value - if i return

0

Witam! Mam taki błąd i nie wiem jak temu zapobiec, tzn. pierwsza metoda działa, a druga już wywala błąd. Kod mam taki:

        public Camera Get(int index)
        {
            if ((cameras.Count != 0) && (index >= 0) && (index < cameras.Count))
                return cameras[index];
            else
                return null; // tu działa do cholery
        }

        public Camera Get(string name)
        {
            if ((cameras.Count != 0) && (!string.IsNullOrWhiteSpace(name)))
                foreach (Camera camera in cameras)
                {
                    if (camera.Name == name)
                        return camera;
                }
            else
                return null; // tu już ch*** -.-
        }
0

Robisz sobie jaja? A jeśli ten warunek:

if ((cameras.Count != 0) && (!string.IsNullOrWhiteSpace(name)))

jest spełniony ale żadna z Camer nie spełnia

if (camera.Name == name)

to co funkcja ma zwrócić?
Przecież ten else z nullem odnosi się tylko (!) to jednego ifa

Tak w ogóle to na moje oko mogłeś po prostu napisać tak:

```csharp
public Camera Get(string name){
    foreach (Camera camera in cameras){
         if (camera.Name == name){
             return camera;
          }
    }
    return null;
}
0

A no fakt :D Nie zauważyłem. A czy tak się poprawnie wykona?

            if ((!string.IsNullOrWhiteSpace(name)))
            {
                foreach (Camera camera in cameras)
                {
                    if (camera.Name == name)
                        return camera;
                }
                return null;
            }
            else
                return null;
1
Shalom napisał(a)

Tak w ogóle to na moje oko mogłeś po prostu napisać tak:

public Camera Get(string name){
    foreach (Camera camera in cameras){
         if (camera.Name == name){
             return camera;
          }
    }
    return null;
}

Po prostu, to by wyglądało tak:

public Camera Get(string name)
{
    return cameras.SingleOrDefault(q => q.Name == name);
}

;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1