c# referencje, słownik

0


Public class Slowo
{
    
    public Slowo lewe, prawe,tlumaczenie;
    public string wyraz;

    public Slowo(string a)
    {
        wyraz = a;
        lewe = null;
        prawe = null;
        tlumaczenie = null;
    }
}



class Dictionary
{
    public Slowo slownik1, slownik2;


    public Slowo get_obiekt(string a, Slowo slownik)
    {


        if (this.mniejszy(slownik.wyraz,a) == 2 && slownik.prawe == null) return (slownik.prawe = new Slowo(a));
        if (this.mniejszy(slownik.wyraz, a) == 1 && slownik.lewe == null) return (slownik.lewe = new Slowo(a));

        if (this.mniejszy(slownik.wyraz, a) == 2 && slownik.prawe != null) return get_obiekt(a, slownik.prawe);
        if (this.mniejszy(slownik.wyraz, a) == 1 && slownik.lewe  != null) return get_obiekt(a, slownik.lewe);

        return new Slowo("blad");   // do tego i tak nie dojdzie, bo powyższe warunki są wystarczające, ale kompilator się czepia...
    }

    public void dodaj(string pl,string eng)
    {
        if (slownik1 == null) { slownik1 = new Slowo(pl); slownik2 = new Slowo(eng); }
        else
        {
              
              this.get_obiekt(pl, slownik1);
              this.get_obiekt(eng, slownik2);


          
        }

    }



 

Metoda get_obiekt zwraca stworzony obiekt Słownika. Za pomocą dodaj, dodaję 2 słowa polskie i angielskie. Chcę ustawić by pola tlumaczenie wskazywały wzajemnie na siebie. Próbowałem wielu rzeczy i nic. Proszę o jakieś wskazówki..
Chciałem stworzyć 2 zmienne tymczasowe z parametrem "ref" by ustawić te pola, ale jakoś mi to nie wychodzi.

0

Myślę, że najprościej będzie pozbyć klasy Slowo, a w swojej klasie słownika (oczywiście nie ma sensu, aby nazywała się Dictionary), zrobić dwa pola typu Dictionary<string, string>, jedno z tłumaczeniem z języka a->b, a drugie b->a. Metoda dodająca parę słów do słownika będzie musiała je dodać do każdego z dwóch Dictionary, będą też potrzebne dwie metody pobierające - oddzielna dla języka a i b.

To uproszczona wizja i niepełna, tzn. mało realistyczna. Jedno słowo może mieć wiele tłumaczeń, dlatego trzeba by zaimplementować słownik, który pod jeden klucz pozwoli wstawić wiele wartości, czyli prawdopodobnie słownik list.

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