Für Liste explizit ja sollte es privat sein, je nachdem, was die Funktionalität, die Sie aussetzen soll, Schnittstellen wie IEnuemerable, ICollection oder IList wäre eine bessere Wahl oder wenn Sie eine Sammlung aussetzen Siehe SLaks Antwort.
Im Allgemeinen ist es keine gute Idee, interne Strukturen und Zustände zu veröffentlichen, und da Ihr Objekt vom Typ List beides ist, sollten Sie es intern halten. Es könnte sinnvoll sein, dem Benutzer die Möglichkeit zu geben, darüber zu iterieren, Elemente hinzuzufügen oder zu entfernen, aber Sie sollten die Liste trotzdem intern halten und entweder Methoden zum Hinzufügen/Entfernen oder zumindest eine Schnittstelle bereitstellen, die es ermöglicht, den Typ der internen Darstellung zu ändern, ohne die öffentliche Schnittstelle zu beeinflussen.
Wenn Sie eine Schnittstelle verwenden, sollten Sie die engstmögliche Schnittstelle wählen.
Wenn der Client-Code also nur eine Aufzählung benötigt, verwenden Sie IEnumerable, wenn der Client-Code einen Index benötigt, verwenden Sie ICollection usw.
weiter, wenn Sie als IEnumerable exponieren, sollten Sie sicherstellen, dass das, was immer Sie zurückgeben, tatsächlich nur lesbar ist, indem Sie entweder eine schreibgeschützte Auflistungsklasse oder einen Iteratorblock verwenden
EDIT nach Aktualisierung In Bezug auf Ihr Beispiel. Fragen Sie sich, ob es sinnvoll ist, dass irgendjemand außer dem Arbeitgeber ändern kann, wer seine Angestellten sind? für mich steckt das schon in den Worten, die Sie gewählt haben. Der Arbeitgeber stellt den Arbeitnehmer ein und sollte die volle Kontrolle darüber haben, wer seine Mitarbeiter sind. In diesem speziellen Fall würde ich es also privat halten und Hire(IEmployee employee) und Fire(IEmployee employee) offenlegen, damit der Code die Absicht deutlich macht