Mój projekt zawiera dużą liczbę klas z właściwościami, których pole zaplecza jest oznaczone jako przeczytane, ponieważ są one ustawione tylko w konstrukcji. Ze względu na styl, lubię używać auto-właściwości, ponieważ eliminuje to wiele kodu standardowego i zachęca do korzystania z elementu własności, a nie z pola zaplecza. Jednak przy korzystaniu z auto-własności tracę "tylko do odczytu" z mojego pola podkładu. Rozumiem, że kompilator/runtime jest w stanie skorzystać z pewnych ulepszeń wydajności, gdy pole jest zaznaczone w ten sposób, więc chciałbym, aby móc oznaczyć moje auto właściwość jako tylko do odczytu, coś takiego:Czy można wymusić automatyczną właściwość, aby użyć pola tylko do odczytu?
[ReadOnly]
public string LastName { get; }
a nie
private readonly string _LastName;
public string LastName
{
get
{
return _LastName;
}
}
Czy jest jakiś mechanizm już dostępny, aby to zrobić? Jeśli nie, czy poprawa wydajności z niestandardowego pola wsparcia jest naprawdę warta przeczytania?
Ujawnienie pola jako publicznego jest inną opcją, jak sądzę, po prostu wydaje się błędne wystawienie pola w ten sposób. tj
public readonly string LastName;
Zgadzam się, wydaje się błędne, aby odsłonić publiczne pole tylko do odczytu. Jeśli kiedykolwiek zajdzie potrzeba zmiany na właściwość później, zmiana naruszy zgodność. –
Jak prawidłowo odpowiedziały odpowiedzi, nie, nie ma sposobu, aby to teraz zrobić. Jest to najczęściej żądana funkcja i zdecydowanie znajduje się wysoko na liście możliwych nowych funkcji hipotetycznych przyszłych wersji tego języka. Osobiście chciałbym mieć cały zestaw powiązanych funkcji, które zachęcają do programowania w niezmienionym stylu; to byłby tylko jeden z nich. –