Globalny wskaźnik na prywatną klasę

Dyskusje na temat języka C# oraz biblioteki .NET

Globalny wskaźnik na prywatną klasę

Postprzez Colder » poniedziałek, 26 grudnia 2011, 20:02

Witam wszystkich bardzo serdecznie.
Od jakiegoś czasu nęka mnie pewna dziwna sytuacja, mianowicie kod:

Kod: Zaznacz cały
public class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}

class test
{
    public int abc;
    public test()
    {
        abc = 1;
    }
}

class test2
{
    int a;
    public test2()
    {
        this.a = qwe.aaa.abc;
    }
}


Wyrzuca błąd:
Inconsistent accessibility: field type 'test' is less accessible than field 'qwe.aaa'

A gdy tylko zmienię "public class qwe" na "class qwe" to wszystko działa, ale... dlaczego?

Pozdrawiam.
Colder
Nowicjusz
 
Posty: 2
Dołączył(a): poniedziałek, 26 grudnia 2011, 19:54

Re: Globalny wskaźnik na prywatną klasę

Postprzez Morfidon » wtorek, 27 grudnia 2011, 15:32

Można to rozwiązać też tak, że wystarczy dodać przed klasą test modyfikator public.

Jest napisane:
Inconsistent accessibility: field type 'test' is less accessible than field 'qwe.aaa'

co oznacza
Niespójna dostępność: pole typu 'test' jest mniej dostępne niż pole 'qwe.aaa "


muszą mieć one ten sam poziom dostępności.
Morfidon
Administrator
Administrator
 
Posty: 593
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48

Re: Globalny wskaźnik na prywatną klasę

Postprzez Colder » wtorek, 27 grudnia 2011, 20:54

No tak, te rozwiązanie rozumiem, jednakże chciałbym aby moja klasa była prywatna i miała np tylko jedną metodę publiczną do której będę się odwoływać przez ten publiczny "wskaźnik".

Jak to uzyskać?

Ale najciekawsze jest to że już znalazłem odpowiedź, zamieniłem
Kod: Zaznacz cały
public class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}


Na :
Kod: Zaznacz cały
class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}


I błąd zniknął, wszystko działa, nie rozumiem tylko dlaczego? Wpadłem na ten pomysł przypadkiem testując i dlatego mnie to męczy.
Colder
Nowicjusz
 
Posty: 2
Dołączył(a): poniedziałek, 26 grudnia 2011, 19:54


Powrót do C# .NET

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron