Field is never assigned to, and will always have its default value 0

Рейтинг: -1Ответов: 1Опубликовано: 16.04.2015
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CalcForTrip
{
    public partial class Form1 : Form
    {
        int startingMilleage;  // Начальный пробег
        int endingMilleage; // Конечный пробег
        double milesTraveled; // Пройдено миль
        double reimburseRate; // Тарифы на мили (цена)
        double amountOwed; // Сколько будем должны

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            startingMilleage = (int)numericUpDown1.Value; // Преобразуем double в int
            endingMilleage = (int)numericUpDown2.Value;
            if (startingMilleage <= endingMilleage)
            {
                milesTraveled = endingMilleage - startingMilleage; 
                amountOwed = milesTraveled * reimburseRate;
                label4.Text = "$" + amountOwed;
            }
            else {
                MessageBox.Show("Начальный пробег не должен превышать конечный", "Cannot Calculate Milleage");
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Пройдено " + milesTraveled + " миль", "Miles Travelled");
        }
    }
}

Выходит ошибка наподобие:

Field 'CalcForTrip.Form1.reimburseRate' is never assigned to, and will always have its default value 0

По учебнику, писал калькулятор для расчета деловой поездки. При компиляции, выдает ошибку сверху. Да и когда нажимаешь на кнопку "Рассчитать", он не рассчитывает условие if заданное в button1 А вот количество пройденных миль в button2считает отлично.

Ответы

▲ 3Принят

В ошибке же всё написано: Вы нигде не присваиваете значение члену класса reimburseRate, который имеет значение по умолчанию, т.е. 0. Таким образом выражение amountOwed = milesTraveled * reimburseRate; всегда будет нулём. Я полагаю, что Вы хотели чего-то иного.