Witam,
Chce napisac liste dwukierunkowa. Napisalem taki kod:
public class List
{
public void dodaj(int wartosc)
{
if (this.pierwszy == null)
{
this.pierwszy = new Element(wartosc);
this.ostatni = this.pierwszy;
}
else
{
Element pomocniczy = new Element(wartosc);
this.ostatni.Nastepny = pomocniczy;
pomocniczy.Poprzedni = this.ostatni;
this.ostatni = this.ostatni.Nastepny;
this.ostatni.Nastepny = null;
}
}
private Element pierwszy;
public Element Pierwszy
{
get { return pierwszy; }
set { pierwszy = value; }
}
private Element ostatni;
class Element
{
public Element(int wartosc)
{
this.wartosc = wartosc;
}
private Element poprzedni;
public Element Poprzedni
{
get { return poprzedni; }
set { poprzedni = value; }
}
private Element nastepny;
public Element Nastepny
{
get { return nastepny; }
set { nastepny = value; }
}
private int wartosc;
}
}
Powyzszy kawalek doku znajduje sie w pliku Lista.cs . W glowym projekcie tworze obikt typu List, a nastepnie dodaje element. I tutaj zaczyna sie problem ... a mianowicie ... powyzszy kod jest nieprawidlowy poniewaz klasa wewnetrzna ma "nizszy" modyfikator niz wlasciwosci Pierwszy. Jakie jest wyjscie z tej sytuacji? na pewno jednym z nich jest dostawienie modyfikatora public do klasy wewnetrznej, ale czy to nie jest lamanie enkapsulacji?