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

0

Witam!

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

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ść.

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.

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ź!

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:

        private bool Foo
        {
            private get;
            set;
        }

Za to taki owszem:

        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.

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