Korzystanie z drugiego konstruktora.

0

Witam, mój problem polega na przypisaniu właściwości A do właściwości B.

Mam następujące konstruktory:

            public Prostokat(double a, double b, double c)
            {
                a = A;
                b = B;
                c = C;
            }

            public Prostokat(double a, double c)
            {
                a = A;
                b = A;
                c = C;
            }

Oraz Metody odpowiedzialne za przekazywanie parametrów:

        public void Wyswietl()
        {
            try
            {
                double c = int.Parse(FC.Text);
                double a = int.Parse(FA.Text);
                double b = int.Parse(FB.Text);
                Prostokat p = new Prostokat(a, b, c);
                p.A = a;
                p.B = b;
                p.C = c;
                FWynik.Text = "a * b * c = " + p.A.ToString() + " * " + p.B.ToString() + " * " + p.C.ToString() + " = " + p.Objetosc.ToString();
                FWysA.Text = "= " + p.A.ToString() + "cm";
                FWysB.Text = "= " + p.B.ToString() + "cm";
                FWysC.Text = "= " + p.C.ToString() + "cm";
                FFigura.Text = Prostokat.Krawedz.Prostopadloscian.ToString();
            }
            catch (Exception)
            {
                MessageBox.Show("Wprowadź Poprawne wartości! !", "Błąd 2!");
            }

        }

        public void WyswietlDwa()
        {
            try
            {
                double a = int.Parse(FA.Text);
                double c = int.Parse(FC.Text);
                Prostokat p1 = new Prostokat(a, c);
                p1.A = a;
                p1.C = c;
                FWynik.Text = "a * b * c = " + p1.A.ToString() + " * " + p1.B.ToString() + " * " + p1.C.ToString() + " = " + p1.Objetosc.ToString();
                FWysA.Text = "= " + p1.A.ToString() + "cm";
                FWysB.Text = "= " + p1.B.ToString() + "cm";
                FWysC.Text = "= " + p1.C.ToString() + "cm";
                FFigura.Text = Prostokat.Krawedz.Prostopadloscian.ToString();
            }

Pierwsza metoda działa bez zarzutu, natomiast druga przypisuje do właściwości B "0". Wiem że mógłbym dodać p1.B = p1.A. Tylko jaki by był sens tworzenia tego konstruktora.

3

Źle

public Prostokat(double a, double b, double c)
            {
                a = A;
                b = B;
                c = C;
            }

Tak samo i drugi konstruktor, to nie ma sensu.
Powinno być

A = a;
B = b;

itd

Zamiast bloku try catch użyj TryParse http://msdn.microsoft.com/pl-pl/library/f02979c7(v=vs.110).aspx

FWynik.Text = "a * b * c = " + p.A.ToString() + " * " + p.B.ToString() + " * " + p.C.ToString() + " = " + p.Objetosc.ToString();

A to co? Liczysz objętość prostokątowi?

I nie musisz walić wszędzie ToString().
Jeśli masz gdzieś "jakiś tekst"+ liczba wtedy ToString() zostanie samo wywołane.

4
dam1an napisał(a):
FWynik.Text = "a * b * c = " + p.A.ToString() + " * " + p.B.ToString() + " * " + p.C.ToString() + " = " + p.Objetosc.ToString();

A to co? Liczysz objętość prostokątowi?

I nie musisz walić wszędzie ToString().
Jeśli masz gdzieś "jakiś tekst"+ liczba wtedy ToString() zostanie samo wywołane.

Przede wszystkim w takiej sytuacji lepiej użyć string.Format.

0

Dzięki panowie :)

0

A jak można odczytać wartość właściwości z zewnątrz kiedy setter jest prywatny?

0

A getter?

0

Normalnie, co ma do tego setter?
Jeśli setter będzie prywatny to nie będziesz mógł nadpisać właściwości ale pobrać tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1