Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano następujące błędy kompilatora:
- CS0132: "konstruktor": konstruktor statyczny musi być bez parametrów.
- CS0514: konstruktor statyczny nie może mieć jawnego wywołania konstruktora "this" lub "base".
- CS0515: modyfikatory dostępu nie są dozwolone w konstruktorach statycznych.
- CS0516: konstruktor 'konstruktor' nie może wywołać samego siebie.
- CS0517: "klasa" nie ma klasy bazowej i nie może wywołać konstruktora podstawowego.
- CS0522: struktury nie mogą wywoływać konstruktorów klas bazowych.
- CS0526: interfejsy nie mogą zawierać konstruktorów.
- CS0568: struktury nie mogą zawierać jawnych konstruktorów bez parametrów.
- CS0573: "deklaracja pola": nie może mieć inicjatorów pól wystąpienia w strukturach.
- CS0710: klasy statyczne nie mogą mieć konstruktorów wystąpień.
- CS0768: konstruktor nie może wywołać się za pomocą innego konstruktora.
- CS1018: Oczekiwane słowo kluczowe "this" lub "base".
- CS8054: Enumy nie mogą zawierać jawnych konstruktorów bez parametrów.
- CS8091: nie może być extern i mieć konstruktor inicjujący.
- CS8861: Nieoczekiwana lista argumentów.
- CS8862: Konstruktor zadeklarowany w typie z listą parametrów musi mieć inicjator konstruktora "this".
- CS8358: Nie można użyć konstruktora atrybutu, ponieważ ma parametry "in".
- CS8867: Nie znaleziono dostępnego konstruktora kopiowania w typie podstawowym "{0}".
- CS8868: Konstruktor kopii w rekordzie musi wywołać konstruktor kopii bazy lub konstruktor obiektu bez parametrów, jeśli rekord dziedziczy z obiektu.
- CS8878: Konstruktor kopii "{0}" musi być publiczny lub chroniony, ponieważ rekord nie jest zapieczętowany.
- CS8910: Podstawowy konstruktor powoduje konflikt z automatycznie generowanym konstruktorem kopii.
- CS8958: Konstruktor struktury bez parametrów musi być "publiczny".
- CS8982: Konstruktor zadeklarowany w "struct" z listą parametrów musi mieć inicjator "this", który wywołuje konstruktor podstawowy lub jawnie zadeklarowany konstruktor.
- CS8983: "struktura" z inicjatorami pól musi zawierać jawnie zadeklarowany konstruktor.
- CS9105: Nie można użyć podstawowego parametru konstruktora w tym kontekście.
- CS9106: Identyfikator jest niejednoznaczny między typem i parametrem w tym kontekście.
- CS9108: Nie można użyć parametru o typie przypominającym ref w metodzie anonimowej, wyrażeniu lambda, wyrażeniu zapytania lub funkcji lokalnej.
-
CS9109: Nie można użyć
ref,outlubinparametru podstawowego konstruktora wewnątrz elementu składowego instancji. - CS9110: Nie można użyć parametru głównego konstruktora, który ma typ ref-podobny, wewnątrz elementu członkowskiego instancji.
- CS9111: metody anonimowe, wyrażenia lambda, wyrażenia zapytania i funkcje lokalne wewnątrz elementu członkowskiego wystąpienia struktury nie mogą uzyskać dostępu do podstawowego parametru konstruktora.
- CS9112: metody Anonimowe, wyrażenia lambda, wyrażenia zapytań i funkcje lokalne wewnątrz struktury nie mogą uzyskać dostępu do podstawowego parametru konstruktora używanego również wewnątrz elementu członkowskiego wystąpienia.
- CS9114: Podstawowy parametr konstruktora typu readonly nie może być przypisany (z wyjątkiem inicjatora init-only typu lub inicjatora zmiennej).
- CS9115: Podstawowy parametr konstruktora typu readonly nie może być zwracany przez odwołanie zapisywalne.
- CS9116: podstawowy parametr konstruktora typu readonly nie może być używany jako wartość ref lub out (z wyjątkiem inicjalizatora init-only typu lub inicjalizatora zmiennej).
- CS9117: Składowe parametru podstawowego konstruktora w typie readonly nie mogą być modyfikowane (z wyjątkiem settera dostępnego tylko podczas inicjowania typu lub inicjatora zmiennej).
- CS9118: Członkowie podstawowych parametrów konstruktora typu tylko do odczytu nie mogą być zwracane jako odwołania pozwalające na zapis.
-
CS9119: Składowe podstawowego parametru konstruktora typu readonly nie mogą być używane jako wartość
reflubout(z wyjątkiem inicjatora init-only typu lub inicjatora zmiennej). - CS9120: Nie można zwrócić podstawowego parametru konstruktora według odwołania.
- CS9121: Parametr podstawowego konstruktora struktury typu powoduje cykl w układzie struktury.
- CS9122: Nieoczekiwana lista parametrów.
- CS9136: Nie można użyć podstawowego parametru konstruktora typu wewnątrz instancji członkowskiej.
Ponadto w tym artykule omówiono następujące ostrzeżenia:
- CS0824: Konstruktor o nazwie "name" jest oznaczony jako zewnętrzny.
- CS9107: parametr jest przechwytywany do stanu typu zawierającego, a jego wartość jest również przekazywana do konstruktora podstawowego. Wartość ta może być także przechwycona przez klasę bazową.
- CS9113: parametr jest nieprzeczytany.
- CS9124: parametr jest przechwytywany do stanu otaczającego typu, a jego wartość jest również używana do inicjowania pola, właściwości lub zdarzenia.
- CS9179: Podstawowy parametr konstruktora jest przesłonięty przez członka z klasy bazowej
- CS9018: Właściwość implementowana automatycznie jest odczytywana przed jawnym przypisaniem, powodując wcześniejsze niejawne przypisanie "default".
- CS9019: Pole jest odczytywane przed jawnym przypisaniem, powodując wcześniejsze niejawne przypisanie "default".
- CS9020: Obiekt "this" jest odczytywany zanim wszystkie jego pola zostaną przypisane, co powoduje, że uprzednie przypisania niejawne wartości domyślnych są wykonywane dla nieprzypisanych pól.
- CS9021: Kontrola jest zwracana do wywołującego przed jawnym przypisaniem właściwości automatycznej, co powoduje wcześniejsze niejawne przypisanie wartości domyślnej.
- CS9022: Kontrola jest zwracana do wywołującego przed jawnym przypisaniem pola, powodując wcześniejsze niejawne przypisanie wartości 'domyślnej'.
Konstruktory statyczne
- CS0132: "konstruktor": konstruktor statyczny musi być bez parametrów.
- CS0514: Konstruktor statyczny nie może zawierać jawnego wywołania konstruktora 'this' lub 'base'.
CS0515 :modyfikatory dostępu nie są dozwolone w konstruktorach statycznych.
Konstruktory statyczne inicjują dane statyczne dla typu. Aby uzyskać więcej informacji, zobacz Konstruktory statyczne.
Aby naprawić te błędy, upewnij się, że deklaracja konstruktora statycznego jest zgodna z następującymi regułami:
- Usuń wszystkie parametry z deklaracji konstruktora statycznego, ponieważ konstruktor statyczny musi być bez parametrów (CS0132). Jeśli musisz przekazać wartości inicjowania, rozważ użycie pól statycznych lub właściwości ustawionych przed uruchomieniem konstruktora statycznego.
- Usuń wszelkie modyfikatory dostępu, takie jak
public,protected,privatelubinternalze statycznego konstruktora, ponieważ środowisko uruchomieniowe steruje, gdy konstruktor statyczny wykonuje modyfikatory dostępu i modyfikatory dostępu nie są istotne (CS0515). - Usuń wszystkie wywołania inicjatora
: base()lub konstruktora: this()ze statycznego konstruktora, ponieważ statyczne konstruktory nie mogą tworzyć łańcucha z innymi konstruktorami (CS0514). Środowisko uruchomieniowe automatycznie wywołuje konstruktor statyczny klasy bazowej, jeśli istnieje.
Deklaracja konstruktora
- CS0526: interfejsy nie mogą zawierać konstruktorów.
- CS0710: klasy statyczne nie mogą mieć konstruktorów wystąpień.
- CS8054: wyliczenie nie może zawierać jawnych konstruktorów bez parametrów.
- CS8358: Nie można użyć konstruktora atrybutu, ponieważ ma on parametry "in".
- CS8091: Konstruktor nie może być zewnętrzny i mieć inicjalizatora konstruktora.
Konstruktory można zadeklarować tylko w typach class i , struct w tym record class i record struct . Aby uzyskać więcej informacji, zobacz Konstruktory wystąpień.
Aby naprawić te błędy, wypróbuj następujące sugestie:
Przenieś konstruktora do typu class lub struct, ponieważ nie można zadeklarować konstruktorów w typach interface lub enum (CS0526, CS8054). Interfejsy definiują kontrakty, ale nie zapewniają logiki inicjowania, a typy wyliczeniowe mają swoje wartości zdefiniowane w czasie kompilacji.
Usuń konstruktory instancji z klas statycznych, ponieważ klasy statyczne nie mogą być instancjonowane i dlatego nie mogą mieć konstruktorów instancji (CS0710). Jeśli potrzebujesz logiki inicjowania, zamiast tego użyj konstruktora statycznego.
Zmień parametry in na parametry przekazywane przez wartość w konstruktorach atrybutów, ponieważ konstruktory atrybutów nie obsługują modyfikatorów parametrów in (CS8358). Środowisko uruchomieniowe tworzy wystąpienie atrybutów przy użyciu odbicia, które nie obsługuje in modyfikatora.
: base() Usuń inicjator konstruktora : this() z extern, ponieważ konstruktory extern nie mogą odwoływać się do innych konstruktorów (CS8091). Implementacja konstruktora extern jest realizowana zewnętrznie, więc łączenie konstruktorów nie jest możliwe.
Dla deklaracji konstruktorów można wygenerować następujące ostrzeżenie:
- CS0824: konstruktor jest oznaczony jako zewnętrzny.
Gdy konstruktor jest oznaczony extern, kompilator nie może sprawdzić, czy implementacja istnieje. Aby pominąć to ostrzeżenie, podaj implementację inną niż extern lub upewnij się, że implementacja zewnętrzna jest poprawnie połączona.
Konstruktory w typach struktur
- CS0568: struktury nie mogą zawierać jawnych konstruktorów bez parametrów.
- CS0573: "deklaracja pola": nie może mieć inicjalizatorów pól instancji w strukturach.
- CS8958: Konstruktor struktury bez parametrów musi być publiczny.
- CS8982: Konstruktor zadeklarowany w „strukturze” z listą parametrów musi mieć inicjator „this”, który wywołuje konstruktor główny lub jawnie zadeklarowany konstruktor.
- CS8983: "struktura" z inicjatorami pól musi zawierać jawnie zadeklarowany konstruktor.
Typy struktur mają określone reguły dotyczące konstruktorów i inicjowania pól. Aby uzyskać więcej informacji, zobacz sekcję Inicjowanie struktury i wartości domyślne w artykule Typy struktury .
Aby naprawić te błędy, wypróbuj następujące sugestie:
- Uaktualnij do wersji C# 10 lub nowszej, jeśli wystąpi cs0568 lub CS0573, ponieważ te błędy występują tylko w starszych wersjach języka C#. Nowoczesny język C# umożliwia jawne konstruktory bez parametrów i inicjatory pól w strukturach.
- Dodaj modyfikator dostępu do każdego konstruktora struktury bez parametrów. Konstruktory struktury bez parametrów muszą być publiczne, aby zapewnić, że wyrażenia i alokacje tablic mogą prawidłowo zainicjować instancje struktur (CS8958).
-
: this(...)Dodaj inicjator do jawnie zadeklarowanych konstruktorów w strukturze, która ma konstruktor podstawowy, ponieważ wszystkie konstruktory z parametrami muszą łączyć się z konstruktorem podstawowym lub innym jawnie zadeklarowanym konstruktorem w celu zapewnienia spójnej inicjalizacji (CS8982). - Zadeklaruj jawny konstruktor, gdy struktura używa inicjatorów pól, ponieważ kompilator wymaga jawnego konstruktora, aby upewnić się, że inicjatory pól są wywoływane (CS8983). Ten konstruktor może być konstruktorem bez parametrów z pustą treścią.
Następujące ostrzeżenia wskazują, że pole lub właściwość nie są jawnie przypisane przed odczytem lub zanim kontrola wróci do obiektu wywołującego:
- CS9018: Właściwość implementowana automatycznie jest odczytywana przed jawnym przypisaniem, powodując wcześniejsze niejawne przypisanie "default".
- CS9019: Pole jest odczytywane przed jawnym przypisaniem, powodując wcześniejsze niejawne przypisanie "default".
- CS9020: Obiekt "this" jest odczytywany przed przypisaniem wszystkich jego pól, co powoduje automatyczne przypisanie wartości domyślnych do pól nieprzypisanych jawnie.
- CS9021: Kontrolka jest zwracana do obiektu wywołującego przed jawnym przypisaniem właściwości implementowanej automatycznie, powodując wcześniejsze niejawne przypisanie "default".
- CS9022: Kontrolka jest zwracana do obiektu wywołującego przed jawnym przypisaniem pola, powodując wcześniejsze niejawne przypisanie wartości "default".
Aby wyciszyć te ostrzeżenia, jawnie przypisz wszystkie pola i właściwości zaimplementowane automatycznie przed ich odczytaniem lub przed zwróceniem sterowania z konstruktora (CS9018, CS9019, CS9020, CS9021, CS9022). Gdy nieprzypisane elementy członkowskie są odczytywane, kompilator niejawnie przypisuje im wartość default, co może nie być zamierzonym zachowaniem.
Wywołania konstruktora z base i this
- CS0516: konstruktor nie może wywołać samego siebie.
- CS0517: klasa nie ma klasy bazowej i nie może wywołać konstruktora podstawowego.
- CS0522: struktury nie mogą wywoływać konstruktorów klas bazowych.
- CS0768: konstruktor nie może wywołać się za pomocą innego konstruktora.
- CS1018: Oczekiwane słowo kluczowe "this" lub "base".
Za pomocą inicjatorów konstruktorów jeden konstruktor może wywołać inny konstruktor za pomocą metody : this() lub : base(). Aby uzyskać więcej informacji, zobacz Using constructors (Używanie konstruktorów).
Aby naprawić te błędy, wypróbuj następujące sugestie:
- Przerwij wszystkie łańcuchy cyklicznych wywołań konstruktorów, ponieważ konstruktor nie może wywoływać siebie ani bezpośrednio, ani pośrednio przez inny konstruktor (CS0516, CS0768). Upewnij się, że łańcuch konstruktorów ostatecznie kończy się na konstruktorze, który nie wywołuje żadnego innego konstruktora w tym samym typie.
- Usuń inicjalizator z konstruktorów w typach struktur lub z konstruktorów w System.Object, ponieważ te typy nie mają konstruktora klasy bazowej do wywołania (CS0517, CS0522). Typy struktur niejawnie dziedziczą z System.ValueType, ale nie można jawnie wywołać jego konstruktora.
- Ukończ inicjator konstruktora lub usuń dwukropek (
:) z deklaracji konstruktora, ponieważ gdy dwukropek następuje po sygnaturze konstruktora, kompilator oczekuje albothis()albobase()(CS1018). Dodaj odpowiednie wywołanie konstruktora lub usuń dwukropek całkowicie, jeśli nie jest zamierzone połączenie.
Rekordy i konstruktory kopii
- CS8867: Nie znaleziono dostępnego konstruktora kopiowania w typie podstawowym.
- CS8868: Konstruktor kopii w rekordzie musi wywołać konstruktor kopii bazy lub konstruktor obiektu bez parametrów, jeśli rekord dziedziczy z obiektu.
- CS8878: Konstruktor kopii musi być publiczny lub chroniony, ponieważ rekord nie jest zapieczętowany.
- pl-PL: CS8910: Podstawowy konstruktor wchodzi w konflikt z syntetyzowanym konstruktorem kopii.
W typie rekordu pochodnego konstruktor kopii jawny musi wywołać konstruktor kopiujący typu podstawowego przy użyciu inicjatora : this() . Jeśli rekord bezpośrednio dziedziczy z System.Object, może wywołać konstruktor obiektu bez parametrów (CS8868).
Rekordy zawierają konstruktor kopiujący syntetyzowany przez kompilator. Można napisać jawny konstruktor kopiujący, ale musi spełniać określone wymagania. Kompilator generuje błędy, gdy konstruktory kopiowania rekordów naruszają następujące wymagania:
- Typ podstawowy musi mieć dostępny konstruktor kopiujący. Wszystkie
recordtypy mają konstruktor kopiujący. Upewnij się, że typ podstawowy torecord, lub dodaj do niego dostępny konstruktor kopiujący (CS8867). - W typie rekordu pochodnego konstruktor kopii jawny musi wywołać konstruktor kopiujący typu podstawowego przy użyciu inicjatora
: base(). Jeśli rekord bezpośrednio dziedziczy z System.Object, może wywołać konstruktor obiektu bez parametrów (CS8868). - Konstruktory kopii muszą być
publiclubprotected, chyba że typ rekordu tosealed. Dodaj odpowiedni modyfikator dostępu do konstruktora kopiowania (CS8878). - Jeśli jawny konstruktor kopiowania ma ten sam podpis co automatycznie generowany konstruktor kopiowania, dochodzi do konfliktu definicji. Usuń jawny konstruktor kopiowania lub zmodyfikuj jego podpis (CS8910).
Podstawowa deklaracja konstruktora
Konstruktory podstawowe deklarują parametry bezpośrednio w deklaracji typu. Kompilator syntetyzuje pole do przechowywania podstawowego parametru konstruktora podczas używania go w inicjatorach elementów członkowskich lub pól.
Łańcuch konstruktora
- CS8861: Nieoczekiwana lista argumentów.
- CS8862: Konstruktor zadeklarowany w typie z listą parametrów musi mieć inicjalizator konstruktora „this”.
- CS9122: Nieoczekiwana lista parametrów.
Gdy typ ma konstruktor podstawowy, wszystkie inne jawnie zadeklarowane konstruktory muszą odwoływać się do niego za pomocą : this(...).
: this(...) Dodaj inicjator, który przekazuje odpowiednie argumenty do konstruktora podstawowego (CS8862).
Usuń listę parametrów z odwołania typu podstawowego, gdy typ podstawowy nie ma konstruktora podstawowego. Składnia class Derived : Base(args) jest prawidłowa tylko wtedy, gdy Base ma konstruktor podstawowy (CS8861). Podobnie usuń listę parametrów podstawowego interface konstruktora z deklaracji, ponieważ interfejsy nie mogą mieć konstruktorów podstawowych (CS9122).
Użycie parametrów w wywołaniach konstruktora podstawowego
- CS9105: Nie można użyć podstawowego parametru konstruktora w tym kontekście.
- CS9106: identyfikator jest niejednoznaczny między typem a parametrem w tym kontekście.
Podstawowe parametry konstruktora można używać tylko w wywołaniu konstruktora podstawowego, jeśli przekazujesz je jako część podstawowej deklaracji konstruktora. Aby naprawić CS9105, przenieś użycie parametru do klauzuli podstawowej deklaracji typu zamiast używać go w jawnie zadeklarowanym wywołaniu konstruktora : base() .
Jeśli typ i podstawowy parametr konstruktora mają taką samą nazwę, odwołanie staje się niejednoznaczne. Aby naprawić cs9106, zmień nazwę typu lub parametru.
Parametry typu przypominającego ref
- CS9108: Nie można użyć parametru o typie przypominającym ref w metodzie anonimowej, wyrażeniu lambda, wyrażeniu zapytania lub funkcji lokalnej.
-
CS9109: Nie można użyć
ref,outlubinpodstawowego parametru konstruktora wewnątrz składowej instancji. - CS9110: Nie można użyć podstawowego parametru konstruktora, który ma typ podobny do odwołania wewnątrz elementu członkowskiego wystąpienia.
- CS9136: Nie można użyć podstawowego parametru konstruktora typu wewnątrz elementu członkowskiego wystąpienia.
Aby rozwiązać te błędy:
- Podstawowe parametry konstruktora typu
ref structmają ograniczenia dotyczące tego, gdzie można ich używać. Przenieś dostęp do parametru z wyrażeń lambda, wyrażeń zapytań lub funkcji lokalnych (CS9108). W typach, które nie sąref struct, uzyskaj dostęp do parametrów tylko w inicjatorach pól lub w ciele konstruktora, a nie w członkach instancji (CS9110, CS9136). - W przypadku typów
ref struct, nie można używać podstawowych parametrów konstruktora z modyfikatoramiin,ref, luboutw metodach instancji lub akcesorach właściwości. Skopiuj wartość parametru do pola w konstruktorze i użyj tego pola w członkach instancji (CS9109).
Ograniczenia typu struktury
- CS9111: metody Anonimowe, wyrażenia lambda, wyrażenia zapytania i funkcje lokalne wewnątrz elementu członkowskiego wystąpienia struktury nie mogą uzyskać dostępu do podstawowego parametru konstruktora.
- CS9112: Metody anonimowe, wyrażenia lambda, wyrażenia zapytań i funkcje lokalne wewnątrz struktury nie mogą uzyskać dostępu do podstawowego parametru konstruktora, który jest również używany wewnątrz członka instancji.
- CS9120: Nie można zwrócić parametru konstruktora podstawowego według odwołania.
- CS9121: parametr podstawowego konstruktora struktury typu powoduje cykl w układzie struktury.
Aby rozwiązać te błędy:
- W typach struktur nie można przechwytywać podstawowych parametrów konstruktora w wyrażeniach lambda, wyrażeniach zapytania lub funkcjach lokalnych wewnątrz elementów członkowskich wystąpienia. Skopiuj parametr do zmiennej lokalnej lub pola przed użyciem go w tych kontekstach (CS9111, CS9112).
- Nie można zwrócić podstawowych parametrów konstruktora przez odwołanie w typach strukturalnych. Zapisz wartość w polu i w razie potrzeby zwróć to pole przez referencję (CS9120).
- Upewnij się, że typ podstawowego parametru konstruktora nie tworzy cyklu w układzie struktury. Struktura nie może zawierać pola własnego typu bezpośrednio lub pośrednio (CS9121).
Ograniczenia tylko do odczytu struktury
- CS9114: Podstawowy parametr konstruktora typu tylko do odczytu nie może być przypisany (z wyjątkiem inicjatora tylko do inicjowania typu lub inicjatora zmiennej).
- CS9115: Podstawowy parametr konstruktora typu readonly nie może być zwracany przez referencję do zapisu.
-
CS9116: Podstawowy parametr konstruktora typu tylko do odczytu nie może być używany jako wartość
reflubout(chyba że w setterze tylko do inicjalizacji tego typu lub jako inicjator zmiennej). - pl-PL: CS9117: Składowe parametru podstawowego konstruktora typu tylko do odczytu nie mogą być modyfikowane (z wyjątkiem w przypadku settera tylko do inicjalizacji w typie lub inicjalizatora zmiennej).
- CS9118: Członkowie podstawowego parametru konstruktora typu readonly nie mogą być zwracane przez odwołanie do zapisu.
-
CS9119: Członkowie podstawowego parametru konstruktora typu readonly nie mogą być używane jako wartość
reflubout(z wyjątkiem inicjatora init-only typu lub inicjatora zmiennej).
Aby rozwiązać te błędy:
- W
readonly structtypach nie można modyfikować podstawowych parametrów konstruktora i ich składowych poza setterami tylko do inicjalizacji ani inicjatorami zmiennych. Przenieś przypisania do inicjatorów pól lub setterów właściwości tylko do inicjacji (CS9114, CS9117). - Nie można zwrócić podstawowych parametrów konstruktora i ich składowych przez zapisywalne odwołanie w
readonly structtypach. Zamiast tego zwracaj wartośćreadonly reflub (CS9115, CS9118). - Nie można przekazać podstawowych parametrów konstruktora i ich członków jako
refargumentówoutwreadonly structtypach. Przekaż je przez wartość lub jakoinargument (CS9116, CS9119).
Ostrzeżenia dotyczące przechwyconych i przesłoniętych parametrów
- CS9107: Parametr jest przechwytywany w stanie otaczającego typu, a jego wartość jest również przekazywana do konstruktora podstawowego. Wartość może zostać również przechwycona przez klasę bazową.
- CS9113: Parametr jest nieprzeczytany.
- CS9124: parametr jest przechwytywany w stanie zamykającego typu, a jego wartość jest również używana do inicjowania pola, właściwości lub zdarzenia.
- CS9179: Podstawowy parametr konstruktora jest przysłonięty przez członek klasy bazowej.
Następujące ostrzeżenia wskazują potencjalne problemy ze sposobem przechowywania lub uzyskiwania dostępu do podstawowych parametrów konstruktora:
- Parametr można przechowywać dwa razy, jeśli obaj przekażesz go do konstruktora podstawowego i uzyskasz do niego dostęp w typie pochodnym. Może istnieć jedna kopia w klasie bazowej, a druga w klasie pochodnej. Zastanów się, czy potrzebujesz obu kopii, czy restrukturyzacji kodu, aby uniknąć duplikowania (CS9107).
- Nie potrzebujesz podstawowego parametru konstruktora, jeśli nigdy go nie odczytasz. Usuń nieużywane parametry z podstawowej deklaracji konstruktora (CS9113).
- Parametr można przechowywać dwa razy, jeśli przechwycisz go w typie otaczającym i użyjesz go do zainicjowania pola, właściwości lub zdarzenia. Rozważ użycie przechwyconego parametru bezpośrednio zamiast inicjowania oddzielnego członka (CS9124).
- Członek bazowego typu przesłania podstawowy parametr konstruktora, gdy oba mają tę samą nazwę. Zmień nazwę parametru, aby uniknąć nieporozumień (CS9179).