Этот метод нарушает правила синтаксиса c #? это будет считаться синтаксической ошибкой? - PullRequest
0 голосов
/ 25 августа 2018

Я написал этот код для приложения формы Windows. Это один из обработчиков событий для нажатия кнопки.

private void btnLP_Click(object sender, EventArgs e)
{
    bool isValidData()
    {
        return
            IsPresent(txtLoanAmountLP) &&
            IsPresent(txtInterstLP) &&
            IsPresent(txtYearsLP) &&
            IsDecimal(txtLoanAmountLP) &&
            IsDecimal(txtInterstLP) &&
            IsDecimal(txtYearsLP) &&
            IsWithinRange(txtLoanAmountLP, 1, 999999) &&
            IsWithinRange(txtInterstLP, 1, 18) &&
            IsWithinRange(txtYearsLP, 1, 30);
    }

    try
    {
        if (isValidData())
        {
            double Loan = Convert.ToDouble(txtLoanAmountLP.Text);
            double IR = Convert.ToDouble(txtInterstLP.Text);
            int yrs = Convert.ToInt32(txtYearsLP.Text);

            double MP = CalcLP(Loan, IR, yrs);
            txtMonthlyPaymentLP.Text = MP.ToString("c");

            txtLoanAmountLP.SelectAll();
            txtLoanAmountLP.Focus();
            totalCal++;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message + "\n\n" + ex.GetType().ToString() +
                        "\n" + ex.StackTrace, "Exception");
    }
}

Мой инструктор утверждает, что есть синтаксическая ошибка, которую я не могу найти. Я думал, что программа даже не может быть скомпилирована, если были синтаксические ошибки. Она сказала, что проблема в том, что у меня есть метод void, возвращающий значение. Мои методы void (обработчики событий для нажатия кнопок) неверны?

1 Ответ

0 голосов
/ 25 августа 2018

Нет, синтаксическая ошибка отсутствует.

Ваш инструктор, вероятно, обеспокоен этой частью, которая появляется в методе с возвращением void:

bool isValidData()
{
    return
        IsPresent(txtLoanAmountLP) &&
        IsPresent(txtInterstLP) &&
        IsPresent(txtYearsLP) &&
        IsDecimal(txtLoanAmountLP) &&
        IsDecimal(txtInterstLP) &&
        IsDecimal(txtYearsLP) &&
        IsWithinRange(txtLoanAmountLP, 1, 999999) &&
        IsWithinRange(txtInterstLP, 1, 18) &&
        IsWithinRange(txtYearsLP, 1, 30);
}

Это, конечно, локальная функция C # 7, которая была недавно представлена. Вы можете сказать ей (с соответствующей вежливостью и смирением, так как вы студент), чтобы прочитать это: Что нового в C # 7.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...