2014-10-14 5 views
-5

Я работаю над программой C#, которая вычисляет валовую оплату, налоги, вычет и чистую оплату с использованием ввода имени, отработанного времени, почасовой ставки и кода удержания. У меня проблемы с одной конкретной частью. Я не могу получить свою функцию «GrossPay», чтобы вернуть брутто-платеж в виде суммы, отображаемой в моем текстовом поле. Функция выполняет отработанные часы и почасовую скорость в качестве параметров и умножает их, присваивает результат валовой оплате, а затем возвращает ее. Я не очень хорошо разбираюсь в синтаксисе C#, поэтому я использую интернет как ресурс, чтобы попытаться написать этот код. Ниже приведен код (неполный) для этой программы.Возвращаемые значения функции в C#

private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     string employeeName = txtEmployeeName.Text; 
     decimal hoursWorked = Decimal.Parse(txtHoursWorked.Text); 
     decimal hourlyRate = Decimal.Parse(txtHourlyRate.Text); 
     int deductionCode = Int32.Parse(txtDeductionCode.Text); 
     GrossPay(); 
    } 

    private void GrossPay(decimal hoursWorked, decimal hourlyRate) 
    { 
     decimal grossPay = hoursWorked * hourlyRate;  
     grossPay = Decimal.Parse(txtGrossPay.Text); 
    } 
+2

Попробуйте 'private decimal GrossPay (...' и сделайте последний оператор 'return grossPay;' –

+0

. В чем вопрос? – BradleyDotNET

+0

'return (hoursWorked * hourlyRate);' никакой реальной необходимости в temp var – Plutonix

ответ

3

У вас есть тип возвращаемого набора для void, что означает, что он не возвращает ничего, когда он завершает. Чтобы что-то вернуть, вы должны объявить тип, который вы возвращаете. Затем, прежде чем ваш функциональный код достигнет «конца», вам нужно что-то вернуть (или выбросить исключение).

В этом случае давайте установим возвращаемый тип в decimal и вернем переменную grossPay, которая имеет тип decimal. Нам также не нужно анализировать его из TextBox, поскольку вы передаете его через параметры функции.

private decimal GrossPay(decimal hoursWorked, decimal hourlyRate) 
{ 
    decimal grossPay = hoursWorked * hourlyRate;  
    return grossPay; 
} 

Мы можем сделать это еще короче, так как нет необходимости в переменной grossPay.

private decimal GrossPay(decimal hoursWorked, decimal hourlyRate) 
{ 
    return hoursWorked * hourlyRate;  
} 

Поскольку эта функция, кажется, не полагаться на какой-либо внешней информации, было бы, вероятно, будет хорошо, чтобы сделать его статическую функцию, поэтому мы не должны иметь экземпляр этого класса перед вызовом GrossPay() функция.

private static decimal GrossPay(decimal hoursWorked, decimal hourlyRate) 
{ 
    return hoursWorked * hourlyRate;  
} 

делает его статичным позволяет назвать это так:

decimal grossPay = MyCalculationUtilities.GrossPay(hoursWorked, hourlyRate); 

Вместо этого:

MyCalculationUtilities calculator = new MyCalculationUtilities(); 
decimalgrossPay = calculator.GrossPay(hoursWorked, hourlyRate); 

Одно последнее предложение, я предлагаю изменить его от GrossPay до CalculateGrossPay, как это более подробное описание того, что на самом деле выполняет функция.

Смежные вопросы