using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Pass_By_Ref
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // Metoda SetToZero() akceptuje przez referencję
        // argument typu int i przypisuje mu wartość 0.
        private void SetToZero(ref int number)
        {
            number = 0;
        }

        private void goButton_Click(object sender, EventArgs e)
        {
            // Zadeklarowanie zmiennych lokalnych typu int.
            int x = 99, y = 100, z = 101;
            
            // Wyświetlenie wartości tych zmiennych.
            outputListBox.Items.Clear();
            outputListBox.Items.Add("Wartość zmiennej x wynosi " + x);
            outputListBox.Items.Add("Wartość zmiennej y wynosi " + y);
            outputListBox.Items.Add("Wartość zmiennej z wynosi " + z);
            
            // Przekazanie zmiennych metodzie SetToZero().
            SetToZero(ref x);
            SetToZero(ref y);
            SetToZero(ref z);
            
            // Ponowne wyświetlenie wartości zmiennych.
            outputListBox.Items.Add("--------------------");
            outputListBox.Items.Add("Wartość zmiennej x wynosi " + x);
            outputListBox.Items.Add("Wartość zmiennej y wynosi " + y);
            outputListBox.Items.Add("Wartość zmiennej z wynosi " + z);
        }

        private void exitButton_Click(object sender, EventArgs e)
        {
            // Zamknięcie formularza.
            this.Close();
        }
    }
}
