więc mam klasy z jednego parametru ciągu w jego konstruktora:Co to jest poprawny sposób, aby potwierdzić argumenty konstruktora
public MyClass(string name)
{
this.Name = name;
}
ale nigdy nie chcesz się martwić o kogoś inicjalizacji instancji MojaKlasa z nazwą o wartości NULL lub łańcuchem o zerowej długości. Co jest najlepsze, aby sprawdzić poprawność parametru? Za pomocą właściwości lub metody zawsze możesz po prostu nic nie robić, zwracać wartość null lub niczego nie ustawiać, jeśli podano niepoprawny argument. Ale po wywołaniu konstruktora instancja obiektu jest już tworzona niezależnie od tego, czy została przekazana poprawna argumentacja.
Wyrzuca wyjątek, jak pokazano poniżej w najlepszy sposób? Czy jest jakaś inna metoda, która jest bardziej preferowana?
public MyClass(string name)
{
if (name == null | name == "") throw new ArgumentException("Name can not be null or blank", "name");
this.Name = name;
}
Oczywiście zawsze mogłem ustawić nazwę do pewnego domyślnie jak „unnamed MojaKlasa”, jeśli argument jest nieważny, ale w tym przypadku wolałbym po prostu zapobiec nieprawidłową nazwę następnie próbuje założyć jakąś alternatywną zachowanie.
Należy być bardzo ostrożnym podczas rzucania wyjątków w konstruktorów Możecie skończyć z wycieku zasobów, gdy yo Zacząłeś chwytać zasoby/alokować pamięć itp. – Matt
Tak czy inaczej, czyż nie byłby || (Logiczne OR), a nie | (Bitowy OR)? Zastanawiam się. –
@Blaenk, tak, użyłem kopiowania i wklejania. Intuicyjnie moje użycie nie miało rzeczywistego wpływu na błąd OP. :) –