Jeżeli metoda zwraca obiekt, to o ile on nie jest listą, to przyjmuje się, że może zwrócić NULL (chyba, że stosujemy jakiś wzorzec typu Null Object pattern czy inne mniej czy bardziej wyszukane rozwiązanie).
Jeżeli metoda zwraca listę, to przyjmuje się, że nie będzie NULL, tylko co najwyżej pusta lista.
Zastanawia mnie jednak czy zawsze. Np. w komunikacji przez web service, często są przesyłane dodatkowe pola, które określają status odpowiedzi. Dla uproszczenia przyjmijmy poniższą klasę. Pytanie czy w przypadku braku sukcesu, lista powinna być wstępnie zainicjalizowana czy powinna być NULLem? Moim zdaniem raczej NULLem, ponieważ brak sukcesu pewnie oznaczać, że nie należy dotykać zwracanej listy, i w jakiś sposób należy obsłużyć zaistniałą sytuację. Jeśli zostanie ona użyta to moim zdaniem najlepiej jakby wywaliła klienta, ponieważ istnieje duże prawdopodobieństwo, że programista który go pisał nie przeczytał, że w odpowiedzi jest coś poza listą.
public class ApiResponse
{
public List<string>? DataList { get; set; } //?? = new List<string>()
public bool Success { get; set; }
}