Modyfikatory dostępu do właściwości

Modyfikatory dostępu do właściwości
SZ
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 5 lat
0

Witam!

Używam .NET 4.0. Mam w klasie jedno pole prywatne i właściwość, która zwraca oraz ustawia to pole:

Kopiuj
protected int seconds;

public int Seconds
{
	get
	{
                return seconds;
	}
	set
	{
                seconds = value;
	}
}

Dlaczego nie mogę poprzedzić właściwości modyfikatorem private ani protected?
Nie mogę również ustawić modyfikatora dostępu do samych bloków get i set.
Wydaje mi się, że we wcześniejszych wersja .NET była taka możliwość.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Wrocław
0
Szach napisał(a)

Dlaczego nie mogę poprzedzić właściwości modyfikatorem private ani protected?

Chyba nie ma powodu, dla którego miałbyś nie móc. Co twierdzi kompilator?

Nie mogę również ustawić modyfikatora dostępu do samych bloków get i set.

Możesz, tylko muszą być bardziej restrykcyjne niż modyfikator właściwości.

Wydaje mi się, że we wcześniejszych wersja .NET była taka możliwość.

Wydaje mi się, że twórcy .NET nie wprowadziliby zmiany powodującej niemożliwość skompilowania milionów linii istniejącego kodu.

SZ
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 5 lat
0
somekind napisał(a)
Szach napisał(a)

Dlaczego nie mogę poprzedzić właściwości modyfikatorem private ani protected?

Chyba nie ma powodu, dla którego miałbyś nie móc. Co twierdzi kompilator?

Kurcze, nie wiem dlaczego, ale wczoraj kompilator wywalał błąd (już nie pamiętam jaki), a dzisiaj wszystko się kompiluje... ehh :/
Dzięki za odpowiedź!

msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
1

Pewnie chodziło o błąd (który somekind wspomniał)

The accessibility modifier of the 'xxx.get' accessor must be more restrictive than the property or indexer xxx.

Czyli taki kod się nie skompiluje:

Kopiuj
        private bool Foo
        {
            private get;
            set;
        }

Za to taki owszem:

Kopiuj
        public bool Foo
        {
            private get;
            set;
        }

Po prostu modyfikator przed getterem i setterem musi być bardziej ograniczający niż modyfikator całej właściwości.

edytowany 3x, ostatnio: msm
somekind
Archełolog. ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.