Globalny wskaźnik na prywatną klasę

Dyskusje na temat języka C# oraz biblioteki .NET
Colder
Nowicjusz
Posty: 2
Dołączył(a): poniedziałek, 26 grudnia 2011, 19:54

Globalny wskaźnik na prywatną klasę

Post przez Colder »

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

Code: 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.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Globalny wskaźnik na prywatną klasę

Post przez Morfidon »

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.
Colder
Nowicjusz
Posty: 2
Dołączył(a): poniedziałek, 26 grudnia 2011, 19:54

Re: Globalny wskaźnik na prywatną klasę

Post przez Colder »

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

Code: Zaznacz cały

public class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}
Na :

Code: 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.
Post Reply