I've done this exact thing just recently in an application that I've been refactoring, to make explicit the actual meaning of the code sans comments:
protected void PaymentButton_Click(object sender, EventArgs e) Func<bool> HaveError = () => lblCreditCardError.Text == string.Empty && lblDisclaimer.Text == string.Empty; CheckInputs(); if(HaveError()) return; ... } protected void PaymentButton_Click(object sender, EventArgs e) Func<bool> HaveError = () => lblCreditCardError.Text == string.Empty && lblDisclaimer.Text == string.Empty; CheckInputs(); if(HaveError()) return; ... }