Использование логических массивов для накопления одного значения go / no-go является излишним. Есть и другие полезные вещи, с которыми вы можете поиграть, чтобы получить представление о массивах.
Вам лучше просто перевести результаты промежуточных проверок в значение, а затем проверить его на true / false:
public bool CheckControls()
{
bool pass = true;
pass &= !string.IsNullOrEmpty(authorbox.Text));
pass &= !string.IsNullOrEmpty(titlebox.Text));
// if any of these are empty then pass is to false and stays that way.
return pass;
}
Если вам необходимо отслеживать, какой промежуточный тест не пройден, рассмотрите возможность использования целого числа и предопределенных констант степеней двух. Здесь вы вместо этого проверяете на ноль, если все хорошо. Это позволяет маскировать возвращаемое значение и накапливать любую комбинацию результатов теста. Пока у вас есть менее 32 (или 64) тестов.
int AUTHORBOX = 2;
int TITLEBOX = 4;
int ISBNBOX = 8;
int PRICEBOX = 16;
public int AlternateCheck()
{
int temp = 0;
temp += string.IsNullOrEmpty(authorbox.Text) ? AUTHORBOX : 0;
temp += string.IsNullOrEmpty(titlebox.Text) ? TITLEBOX : 0;
temp += string.IsNullOrEmpty(isbnbox.Text) ? ISBNBOX : 0;
temp += string.IsNullOrEmpty(pricebox.Text) ? PRICEBOX : 0;
return temp;
}