Chciałbym zastąpić metodę 'TryParse
, aby zaakceptować "tak" i "nie". Znam metodę, którą chcę użyć (poniżej), ale nie wiem, jak zastąpić metodę bool
.Jak mogę przesłonić TryParse?
... bool TryParse(string value, out bool result)
{
if (value == "yes")
{
result = true;
return true;
}
else if (value == "no")
{
result = false;
return true;
}
else
{
return bool.TryParse(value, result);
}
}
Osobiście lubię moje metody analizowania składni, zwracając 'Nullable <>', gdzie zwracana jest wartość 'null', jeśli nie można przeanalizować łańcucha. Eliminuje to potrzebę parametru out i sprawia, że składnia wywołania jest przyjemna. np. 'bool a =" blah ".ParseBool()? false; ' – Greg
' Nullables' są rzeczywiście przydatne podczas parsowania, ale próbowałem zastąpić istniejącą metodę 'TryParse'. Teraz, kiedy piszę własne, prawdopodobnie zrobię coś takiego. Ponadto używam 'StringComparison.OrdinalIgnoreCase', ale nie umieszczam go w moim przykładzie tylko po to, aby wyglądał czystszy. Na koniec, dlaczego miałbyś etykietować swoją metodę "TryParseBoolean", gdy twoim typem jest 'bool'? (Chociaż przypuszczam, że jeśli przełączysz się na 'Nullables', będziesz potrzebować tego nazewnictwa.) – dlras2
@ cyclotis04 - Dobre połączenie. Ze względu na parametr out, nazwa 'TryParse' byłaby rzeczywiście wystarczająca. – Greg