Помощь в понимании кода
namespace VisualCalculator { /// public partial class MainWindow : Window { bool isNewEntry = true; double currentValue = 0; enum Operation { Add, Subtract, Multiply, Divide, Equals, Start, LastOp }; Operation currentOperation = Operation.Start; public MainWindow() { InitializeComponent(); txtOut.Text = currentValue.ToString(); } private void BtnEntry_Click(object sender, RoutedEventArgs e) { //dummy value for trying to parse the entry string int result; //Get the value from the button label Button btn = (Button)sender; string value = btn.Content.ToString(); //special handling for decimal point if (value.Equals(".")) { if (isNewEntry) { return; } if (!txtOut.Text.Contains(".")) { txtOut.Text += value; isNewEntry = false; } return; } //try to parse entry as int; //if successful, append to current entry if (Int32.TryParse(value, out result)) { if (isNewEntry || txtOut.Text.Equals("0")) { txtOut.Text = ""; } txtOut.Text += value; isNewEntry = false; } } private void Calculate(Operation op) { double newValue = Double.Parse(txtOut.Text); double result; if (op != Operation.LastOp) { currentOperation = op; } switch (currentOperation) { case Operation.Add: result = currentValue + newValue; break; case Operation.Subtract: if (currentValue == 0) { result = newValue; } else { result = currentValue - newValue; } break; case Operation.Multiply: if (currentValue == 0) { result = newValue; } else { result = currentValue * newValue; } break; case Operation.Divide: if (newValue == 0) { txtOut.Text = currentValue.ToString(); return; } else if (currentValue == 0) { currentValue = newValue; txtOut.Text = "0"; return; } else { result = currentValue / newValue; } break; default: return; } currentValue = result; txtOut.Text = result.ToString(); isNewEntry = true; } // 4 event handlers for operations: private void BtnAdd_Click(object sender, RoutedEventArgs e) { Calculate(Operation.Add); } private void BtnSubtract_Click(object sender, RoutedEventArgs e) { Calculate(Operation.Subtract); } private void BtnMultiply_Click(object sender, RoutedEventArgs e) { Calculate(Operation.Multiply); } private void BtnDivide_Click(object sender, RoutedEventArgs e) { Calculate(Operation.Divide); } //Clear the current results private void BtnClear_Click(object sender, RoutedEventArgs e) { txtOut.Text = "0"; currentValue = 0; isNewEntry = true; } //Handle the Equals button private void BtnEquals_Click(object sender, RoutedEventArgs e) { Calculate(Operation.LastOp); } } }
Что я уже пробовал:
Дорогие все,
Я начинающий разработчик C#, и у меня есть некоторые проблемы с пониманием кода. Lynda.com учебники. Это приложение для визуального калькулятора.
Я понимаю обработчик событий btnEntry, но тогда я полностью потерян...
Мои вопросы таковы:
1) Как скрипт отличается от значения, введенного "до" выбора оператора и "после"?
Я заметил 2 vars-currentValue и newValue, но совершенно не понимаю логики, как это делается...
2) метод вычисления операции с аргументом операции:
Не понимаю, что одна на всех...
3) мульти (вложенные) " if statments"
Что именно делает ключевое слово return?
Всего наилучшего,
Пит
Patrice T
И вам никогда не приходило в голову спросить автора ?
NotPolitcallyCorrect
На вопросы 1 и 2 Вы можете легко ответить, научившись пользоваться отладчиком. На вопрос № 3 можно было бы легко ответить, если бы вы просто прочитали документацию.