Metody Wirtualne (base.*)

0

Witam mam problem z metodami wirtualnymi, pokaże kod :

Klasa Main :

using System;

namespace Nauka
{
    class Main
    {
        
        public virtual void Pensja(int a)
        {
            int b = 10;
            a =+ b;  
        }

    }
}

Klasa Class1 :

using System;

namespace Nauka
{
    class Class1 : Main
    {
        public override void Pensja(int a)
        {
            base.Pensja(a);
            Console.WriteLine(b);
        }
    }
}

Problem w tym że nie mam dostępu do zmiennej 'b'

1

Zmienna b jest dostępna tylko w zasięgu metody Pensja w klasie Main.

0

Czyli nie da się zmodyfikować programu aby mieć do niej dostęp ?

1

Oczywiście, że się da. Musisz tak zmodyfikować kod w metodzie z klasy Main by mieć dostęp do tamtej zmiennej z innych miejsc programu ;)
Np. poprzez przechowywanie jej w jako pola w klasie Main lub zwracanie owej wartości.

0

Mógłbyś pokazać to obrazowo w postaci bardzo prostego kodu ?

1
using System;

namespace Nauka
{
	class Main
	{
		public int b; 
		public virtual void Pensja(int a)
		{
			b = 10;
			a = +b;
			
		}

	}
	class Class1 : Main
	{
		public override void Pensja(int a)
		{
			base.Pensja(a);
			Console.WriteLine(b);
			
		}
	}

	class App
	{
		static void Main()
		{
			Class1 c1 = new Class1();
			c1.Pensja(5);
		}
	}
} 
0

Aha, podziekował bardzo :D Nie pomyślałem o tym żeby z dziedziczenia wziąć zmienna

0
a =+ b;  

Prawdopodobnie najpiękniejszy kawałek kodu C# w historii.
Tylko po co takie coś? :)

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