CA2104: Nie deklaruj zmiennych typów referencyjnych tylko do odczytu
Pozycja | Wartość |
---|---|
Ruleid | CA2104 |
Kategoria | Microsoft.Security |
Zmiana powodująca niezgodność | Niezgodność |
Uwaga
Reguła CA2104 jest przestarzała i zostanie usunięta w przyszłej wersji programu Visual Studio. Nie zostanie zaimplementowany jako analizator ze względu na skomplikowaną analizę wymaganą do określenia rzeczywistej niezmienności typu.
Przyczyna
Typ widoczny z zewnątrz zawiera widoczne na zewnątrz pole tylko do odczytu, które jest typu referencji zmiennej.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Typ zmienny to typ, którego dane wystąpienia mogą być modyfikowane. Klasa System.Text.StringBuilder jest przykładem modyfikowalnego typu odwołania. Zawiera elementy członkowskie, które mogą zmienić wartość wystąpienia klasy. Przykładem niezmiennego typu odwołania jest System.String klasa . Po utworzeniu wystąpienia jej wartość nigdy nie może ulec zmianie.
Modyfikator tylko do odczytu (tylko do odczytu w języku C#, ReadOnly w języku Visual Basic i const w języku C++) w polu typu odwołania (lub wskaźnik w języku C++) uniemożliwia zastąpienie pola przez inne wystąpienie typu odwołania. Modyfikator nie uniemożliwia jednak modyfikacji danych wystąpienia pola za pomocą typu odwołania.
Ta reguła może przypadkowo pokazywać naruszenie typu, który jest w rzeczywistości niezmienny. W takim przypadku można bezpiecznie pominąć ostrzeżenie.
Pola tablic tylko do odczytu są wykluczone z tej reguły, ale zamiast tego powodują naruszenie ca2105: Pola tablicy nie powinny być regułą tylko do odczytu.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, usuń modyfikator tylko do odczytu lub, jeśli zmiana powodująca niezgodność jest akceptowalna, zastąp pole niezmiennym typem.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć ostrzeżenie z tej reguły, jeśli typ pola jest niezmienny.
Przykład
W poniższym przykładzie pokazano deklarację pola, która powoduje naruszenie tej reguły:
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla