У меня есть небольшая проблема при работе с C# и использовании IF-статусов с несколькими условиями.C# multiple, если условия на той же полосе
Это наиболее распространенное явление.
private void SomeFunction(string SomeString)
{
if(SomeString != null && SomeString.Trim() != "")
{
}
}
На некоторых языках, таких как javascript, если первый аргумент не сработает (SomeString! = Null), вторая проверка не будет выполнена. Кажется, что C# проверяет оба аргумента, даже если первый из них терпит неудачу, а затем второй генерирует исключение, поскольку вы не можете использовать .Trim() для нулевого значения.
Прямо сейчас я перехожу к этому путем вложения моего ifs, который является грязной работой. Пример:
private void SomeFunction(string SomeString)
{
if(SomeString != null)
{
if(SomeString.Trim() != "")
{
.....
}
}
}
Есть ли у кого-нибудь какие-либо предложения или рекомендации по лучшему способу решить эту проблему?
Хорошее эмпирическое правило: ** идти с тем, что легче читать понять **. Лично я предпочитаю первое. C# не будет проверять второе условие, если первый сбой. –
C# использует оценку короткого замыкания, как JavaScript. Если 'SomeString' равно null, следующая часть выражения будет * not * оценена. – Tim
Я только что проверил первый фрагмент кода и фактически * SomeString.Trim()! = "" * Никогда не оценивался, если первый сбой. Я удивлен! – Alireza