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:
- CS0022: Nieprawidłowa liczba indeksów wewnątrz [], oczekiwana 'liczba'
-
CS0178: Nieprawidłowy specyfikator rangi: oczekiwany "
," lub "]" - CS0248: Nie można utworzyć tablicy o ujemnym rozmiarze
-
CS0270: Nie można określić rozmiaru tablicy w deklaracji zmiennej (spróbuj zainicjować przy użyciu wyrażenia "
new") - CS0611: Elementy tablicy nie mogą być typu
- CS0623: Inicjatory tablic mogą być używane tylko w inicjatorze zmiennych lub pól. Zamiast tego spróbuj użyć nowego wyrażenia.
- CS0650: Zły deklarator tablicy: aby zadeklarować tablicę zarządzaną, specyfikator rangi poprzedza identyfikator zmiennej. Aby zadeklarować pole bufora o stałym rozmiarze, użyj stałego słowa kluczowego przed typem pola.
- CS0719: Elementy tablicy nie mogą być typu statycznego
- CS0747: Nieprawidłowy deklarator elementu członkowskiego inicjalizatora.
- CS0820: Nie można przypisać inicjatora tablicy do niejawnie zadeklarowanej zmiennej lokalnej
- CS0826: Nie znaleziono najlepszego typu dla niejawnie typizowanej tablicy.
- CS0846: Oczekiwano zagnieżdżonego inicjatora tablicy
- CS1063: Najlepsza przeciążona metoda Add elementu inicjatora kolekcji jest przestarzała.
-
CS1552: Specyfikator typu tablicy,
[], musi być wyświetlany przed nazwą parametru - CS1586: Tworzenie tablicy musi zawierać rozmiar tablicy lub inicjator tablicy
- CS1920: Inicjator elementu nie może być pusty.
-
CS1921: Najlepsze dopasowanie metody przeciążonej ma nieprawidłową sygnaturę dla elementu inicjatora. Inicjalizowany
Addmusi być dostępną metodą instancji. - CS1925: Nie można zainicjować obiektu typu "type" za pomocą inicjatora kolekcji.
- CS1950: Najlepsza przeciążona metoda Add dla inicjatora kolekcji ma kilka nieprawidłowych argumentów.
-
CS1954: Nie można użyć najlepszego przeciążonego dopasowania metody dla elementu inicjatora kolekcji. Metody inicjatora kolekcji "
Add" nie mogą miećrefluboutparametrów. - CS9174: Nie można zainicjować typu z literałem kolekcji, ponieważ typ jest nieskonstruowalny.
- CS9176: Nie ma typu docelowego literału kolekcji.
- CS9185: Typ konstruktora CollectionBuilderAttribute musi być klasą niegeneryjną lub strukturą.
- CS9186: Nazwa metody CollectionBuilderAttribute jest nieprawidłowa.
-
CS9187: Nie można znaleźć dostępnej metody z oczekiwanym podpisem: metoda statyczna z pojedynczym parametrem typu
ReadOnlySpan<T>; i poprawny typ zwracany - CS9188: Typ ma atrybut CollectionBuilderAttribute, ale nie ma typu elementu.
- CS9203: Nie można użyć wyrażenia kolekcji tego typu w tym kontekście, ponieważ może być uwidocznione poza bieżącym zakresem.
- CS9210: Nie można używać tej wersji System.Collections.Immutable.ImmutableArray<T>z wyrażeniami kolekcji.
-
CS9212: Operator rozproszenia "
.." nie może działać na zmiennych typu "type", ponieważ "type" nie zawiera publicznego wystąpienia ani definicji rozszerzenia dla członka. - CS9213: Obiekt docelowy wyrażenia kolekcji "type" nie ma typu elementu.
- CS9214: Typ wyrażenia kolekcji musi mieć odpowiedni konstruktor, który może być wywoływany bez argumentów.
- CS9215: Typ wyrażenia kolekcji "type" musi mieć wystąpienie lub metodę rozszerzenia "Add", którą można wywołać za pomocą jednego argumentu.
- CS9222: Inicjator kolekcji powoduje nieskończony łańcuch wystąpień kolekcji "type".
- CS9332: Nie można użyć operatora rozszerzenia '..' w wyrażeniu filtru klauzuli catch.
- CS9354: element "with(...)" musi być pierwszym elementem
- CS9355: elementy "with(...)" nie są obsługiwane dla typu "type"
- CS9356: argumenty elementu "with(...)" nie mogą być dynamiczne
- CS9357: element "with(...)" dla interfejsu tylko do odczytu musi być pusty, jeśli jest obecny
- CS9358: Typ elementu tej kolekcji może nie być strukturą ref lub parametrem typu umożliwiającym struktury ref
- CS9359: Brak przeciążenia dla metody 'method', które przyjmuje 'number' z argumentami typu 'with(...)'
Ponadto w tym artykule omówiono następujące ostrzeżenia:
- CS1062: Najlepsza przeciążona metoda Add dla elementu inicjalizującego kolekcję jest przestarzała.
- CS1064: Najlepsza przeciążona metoda Add jest przestarzała dla elementu inicjatora kolekcji.
- CS3007: Przeciążona metoda "method" różniąca się tylko nienazwanymi typami tablic nie jest zgodna z wymaganiami CLS
- CS3016: Tablice jako argumenty atrybutów nie są zgodne ze standardem CLS
- CS0251: Indeksowanie tablicy z indeksem ujemnym (indeksy tablicy zawsze zaczynają się od zera)
- CS9208: Wyrażenie kolekcji może powodować nieoczekiwane alokacje sterty. Rozważ jawne utworzenie tablicy, a następnie przekonwertowanie na ostateczny typ w celu jawnego przydzielenia.
-
CS9209: Wyrażenie kolekcji może powodować nieoczekiwane alokacje sterty ze względu na użycie spreadów "
..". Rozważ jawne utworzenie tablicy, a następnie przekonwertowanie na ostateczny typ w celu jawnego przydzielenia. - CS9332: Nie można użyć operatora rozszerzenia '..' w wyrażeniu filtru klauzuli catch.
Nieprawidłowy dostęp do elementu tablicy
- CS0022: Nieprawidłowa liczba indeksów wewnątrz [], oczekiwana liczba
- CS0251: Indeksowanie tablicy z indeksem ujemnym (indeksy tablicy zawsze zaczynają się od zera)
Aby poprawnie uzyskać dostęp do elementów tablicy, postępuj zgodnie z tymi regułami indeksowania. Aby uzyskać więcej informacji, zobacz Tablice.
- Określ tę samą liczbę indeksów co zadeklarowane wymiary (CS0022). Tablica jednowymiarowa wymaga jednego indeksu; tablica trójwymiarowa wymaga trzech indeksów.
- Używaj tylko nieujemnych liczb całkowitych dla indeksów tablicy (CS0251). Indeksy tablic zawsze zaczynają się od zera.
Nieprawidłowy inicjator kolekcji
- CS0747: Nieprawidłowy deklarator członka inicjalizatora.
- CS1920: Inicjator elementu nie może być pusty.
-
CS1921: Najlepsze dopasowanie metody przeciążonej ma nieprawidłową sygnaturę dla elementu inicjalizatora. Element inicjalizujący
Addmusi być dostępną metodą instancji. - CS1922: Nie można zainicjować typu "type" za pomocą inicjatora kolekcji, ponieważ element "type" nie implementuje elementu "System.Collections.IEnumerable".
- CS1925: Nie można zainicjować obiektu typu "type" za pomocą inicjatora kolekcji.
- CS1927: Ostrzeżenie: Pomijanie /win32manifest dla modułu, ponieważ dotyczy tylko zestawów
- CS1950: Najlepsza przeciążona metoda Add dla inicjatora kolekcji ma kilka nieprawidłowych argumentów.
-
CS1954: Najlepsze dopasowanie przeciążonej metody dla elementu inicjatora kolekcji nie może być użyte. Metody inicjatora kolekcji "
Add" nie mogą mieć parametrówrefaniout. - CS9174: Nie można zainicjować typu za pomocą literału kolekcji, ponieważ typ nie jest możliwy do skonstruowania.
- CS9176: Nie ma typu docelowego dla literału zbioru.
- CS9203: Nie można użyć wyrażenia kolekcji tego typu w tym kontekście, ponieważ może być uwidocznione poza bieżącym zakresem.
- CS9210: Tej wersji System.Collections.Immutable.ImmutableArray<T> nie można używać z wyrażeniami kolekcji.
-
CS9212: Operator spreadu "
.." nie może działać na zmiennych typu "type", ponieważ "type" nie zawiera wystąpienia publicznego ani definicji rozszerzenia dla elementu "member". - CS9213: Obiekt docelowy wyrażenia kolekcji "type" nie ma typu elementu.
- CS9214: Typ wyrażenia kolekcji musi mieć odpowiedni konstruktor, który może być wywoływany bez argumentów.
- CS9215: Typ wyrażenia kolekcji "type" musi mieć wystąpienie lub metodę rozszerzenia "Add", którą można wywołać za pomocą jednego argumentu.
- CS9222: Inicjator kolekcji powoduje nieskończony łańcuch wystąpień kolekcji "type".
- CS9332: Nie można użyć operatora spreadu ".." w wyrażeniu filtru klauzuli catch.
- CS9354: element "with(...)" musi być pierwszym elementem
- CS9355: elementy "with(...)" nie są obsługiwane dla typu "type"
- CS9356: argumenty elementu "with(...)" nie mogą być dynamiczne
- CS9357: element "with(...)" dla interfejsu tylko do odczytu musi być pusty, jeśli jest obecny
- CS9358: Typ elementu tej kolekcji może nie być strukturą ref lub parametrem typu umożliwiającym struktury ref
- CS9359: Brak przeciążenia metody "method" przyjmuje argumenty elementu "number" "with(...)"
Kompilator może również wygenerować następujące ostrzeżenia:
- CS1062: Najlepsza przeciążona metoda Add elementu inicjatora kolekcji jest przestarzała.
- CS1063: Najlepsza przeciążona metoda Add elementu inicjatora kolekcji jest przestarzała.
- CS1064: Najlepsza przeciążona metoda Add elementu inicjatora kolekcji jest przestarzała.
- CS9208: Wyrażenie kolekcji może powodować nieoczekiwane alokacje na stercie. Rozważ jawne utworzenie tablicy, a następnie przekonwertowanie na ostateczny typ w celu zrozumiałego przydzielenia.
-
CS9209: Wyrażenie kolekcji może powodować nieoczekiwane alokacje sterty ze względu na użycie spreadów "
..". Rozważ jawne utworzenie tablicy, a następnie przekonwertowanie na ostateczny typ w celu jawnego przydzielenia.
Aby utworzyć prawidłowe inicjatory kolekcji, postępuj zgodnie z tymi regułami. Aby uzyskać więcej informacji, zobacz Wyrażenia kolekcji.
- Nie mieszaj inicjowania właściwości z dodawaniem elementów w tym samym inicjatorze (CS0747).
- Uwzględnij co najmniej jeden element w inicjatorach kolekcji z nawiasami klamrowymi (CS1920).
- Upewnij się, że typ kolekcji implementuje
IEnumerable(CS1922). - Użyj inicjatorów kolekcji tylko z typami kolekcji (CS1925).
-
AddSprawdź, czy metoda jest dostępna, przyjmuje jeden parametr pasujący do typu elementu i nie używarefanioutmodyfikatorów (CS1921, CS1954). - Rozwiąż niejednoznaczne
Addprzeciążenia metod (CS1950). - Podaj jawny typ docelowy dla wyrażeń kolekcji, gdy kompilator nie może go wywnioskować (CS9176, CS9213).
- Upewnij się, że typ kolekcji jest konstruowany przy użyciu konstruktora bez parametrów (CS9174, CS9214).
- Nie używaj
ref structtypów w wyrażeniach kolekcji, które mogą naruszać bezpieczeństwo ref (CS9203). - Zaktualizuj środowisko uruchomieniowe do zgodnej wersji dla wyrażeń kolekcji
ImmutableArray(CS9210). - Zaimplementuj wzorce wyliczenia (na przykład
GetEnumerator) dla obsługi operatorów rozprzestrzeniania (CS9212). - Unikaj zależności cyklicznych podczas inicjalizacji kolekcji (CS9222).
- Nie używaj operatora spread w wyrażeniach filtrów klauzul catch (CS9332).
-
with(...)Umieść element jako pierwszy w wyrażeniach kolekcji (CS9354). - Używaj
with(...)elementów tylko z typami, które obsługują argumenty wyrażeń kolekcji (CS9355). - Nie używaj argumentów dynamicznych w
with(...)elementach (CS9356). - Użyj wartości pustej
with()dla typów interfejsów tylko do odczytu (CS9357). - Nie używaj typów struktury ref jako typów elementów w kolekcjach, które nie obsługują ich (CS9358).
- Dopasuj liczbę argumentów
with(...)do dostępnych przeciążeń konstruktora (CS9359).
Nieprawidłowa ranga tablicy
-
CS0178: Nieprawidłowy specyfikator rangi: oczekiwany "
," lub "]" - CS0650: Zły deklarator tablicy: aby zadeklarować tablicę zarządzaną, specyfikator rangi poprzedza identyfikator zmiennej. Aby zadeklarować pole bufora o stałym rozmiarze, użyj stałego słowa kluczowego przed typem pola.
-
CS1552: Specyfikator typu tablicy,
[], musi pojawić się przed nazwą parametru
Aby poprawnie zadeklarować tablice, postępuj zgodnie z właściwą kolejnością składni. Aby uzyskać więcej informacji, zobacz Tablice oraz Specyfikację języka C# w sekcji dotyczącej inicjatorów tablic.
Deklaracja tablicy składa się z tych tokenów w kolejności:
- Typ elementów tablicy (na przykład ,
intstring, lubSomeClassType). - Nawiasy tablicowe, opcjonalnie łącznie z przecinkami dla wielu wymiarów.
- Nazwa zmiennej.
Podczas określania wymiarów tablicy można użyć:
- Liczba elementów w nawiasach klamrowych (
{i}) - Puste nawiasy
- Jedna lub więcej przecinków ujętych w nawiasy
W poniższych przykładach pokazano prawidłowe deklaracje tablicy:
int[] anArrayOfIntegers;
string[,,] threeDimensionalStringArray;
Nieprawidłowa długość tablicy
- CS0248: Nie można utworzyć tablicy o ujemnym rozmiarze
- CS0270: Nie można określić rozmiaru tablicy w deklaracji zmiennej (spróbuj zainicjować przy użyciu wyrażenia "new")
- CS1586: Tworzenie tablicy musi mieć rozmiar tablicy lub inicjator tablicy
Aby utworzyć tablice o prawidłowych długościach, określ rozmiar podczas inicjowania, a nie deklarację. Aby uzyskać więcej informacji, zobacz Tablice.
- Określ długość tablicy w ramach inicjowania, a nie deklaracji (CS0270).
- Używaj tylko dodatnich liczb całkowitych dla wymiarów tablicy (CS0248).
- Podaj rozmiar w wyrażeniu
newlub w inicjatorze tablicy (CS1586).
W poniższym przykładzie przedstawiono oba mechanizmy:
int[] fiveIntegers = new int[5];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
Nieprawidłowy typ elementu
- CS0611: Elementy tablicy nie mogą być typu "type"
- CS0719: Elementy tablicy nie mogą być typu statycznego
- CS0820: Nie można przypisać inicjatora tablicy do niejawnie typowanej zmiennej lokalnej
- CS0826: Nie znaleziono najbardziej odpowiedniego typu dla niejawnie typizowanej tablicy
Aby używać tablic z poprawnymi typami elementów, postępuj zgodnie z tymi ograniczeniami typów. Aby uzyskać więcej informacji, zobacz Niejawnie wpisane zmienne lokalne i najlepszy typ.
- Nie używaj typów ograniczonych, takich jak System.TypedReference i System.ArgIterator jako typów elementów tablicy (CS0611).
- Nie używaj
staticklas jako typów elementów tablicy, ponieważ nie można utworzyć wystąpień (CS0719). - Zainicjuj niejawnie wpisane tablice za pomocą
newwyrażenia (CS0820). - Upewnij się, że wszystkie elementy w niejawnie wpisanym inicjatorze tablicy mają najlepszy wspólny typ (CS0826).
W poniższych przykładach pokazano, jak zadeklarować niejawnie typowane tablice.
var implicitType = new[] { 1, 2, 3 };
char c = 'c';
short s1 = 0;
short s2 = -0;
short s3 = 1;
short s4 = -1;
// common type is "int"
var commonType = new[] { s1, s2, s3, s4, c, 1 };
Aby zapewnić najlepszy wspólny typ, użyj dowolnej z tych technik:
- Nadaj tablicy jawny typ.
- Nadaj wszystkim elementom tablicy ten sam typ.
- Podaj jawne rzutowania elementów, które mogą powodować problem.
Nieprawidłowy inicjator tablicy
- CS0623: Inicjatory tablic mogą być używane tylko w inicjatorze zmiennych lub pól. Zamiast tego spróbuj użyć nowego wyrażenia.
- CS0846: Oczekiwany jest zagnieżdżony inicjator tablicy
- CS1925: Nie można zainicjować obiektu typu "type" za pomocą inicjatora kolekcji.
Te błędy wskazują nieprawidłową składnię inicjalizatora tablicy. Aby uzyskać więcej informacji, zobacz Tablice.
Aby utworzyć prawidłowe inicjatory tablicy:
- Użyj inicjatorów tablic tylko w deklaracjach zmiennych lub pól (CS0623).
newUżyj wyrażenia w innych kontekstach. - Ustalaj równowagę nawiasów klamrowych (
{i}) dla elementów lub tablic podrzędnych (CS0846). - Upewnij się, że wyrażenie inicjowania odpowiada liczbie tablic w inicjowaniu tablicy postrzępionej.
- Używaj inicjatorów kolekcji tylko z typami kolekcji, ale nie z tablicami ani innymi typami (CS1925).
Nieprawidłowy konstruktor kolekcji
- CS9175: Drzewo wyrażeń może nie zawierać wyrażenia kolekcji.
- CS9177: Typ zwracany metody konstruktora "CollectionBuilderAttribute" musi być zgodny z typem kolekcji używanym w funkcji "betterness".
- CS9178: Nie ma typu docelowego dla typu naturalnego "typ".
- CS9179: Typ wyrażenia kolekcji musi mieć odpowiedni konstruktor, który może być wywoływany bez argumentów.
- CS9180: Metoda konstruktora "CollectionBuilderAttribute" musi być metodą statyczną.
- CS9181: Typ parametru metody konstruktora "CollectionBuilderAttribute" musi być zgodny z parametrem "ReadOnlySpan<{0}>"
- CS9182: Nieprawidłowy element "CollectionBuilderAttribute". Nie znaleziono pasującej metody "{0}" w typie konstruktora "{1}".
- CS9183: Typ zwracany metody "CollectionBuilderAttribute" musi być typem nie abstrakcyjnym, bez interfejsu, który może być używany jako typ "type"
- CS9185: Typ statyczny nie może być używany jako argument typu.
-
CS9186: Nazwa metody jest nieprawidłowa
CollectionBuilderAttribute. - CS9187: Nie można odnaleźć dostępnej metody "Create" z oczekiwanym podpisem: metoda statyczna z pojedynczym parametrem typu "ReadOnlySpan<{0}>" i zwracanym typem "{1}".
- CS9188: "scoped" nie może być używany jako modyfikator parametru typu wyrażenia kolekcji.
- CS9190: Metoda "CollectionBuilderAttribute" "builderMethod" jest niestosowalna, ponieważ jest ogólna.
- CS9192: Konwersje tablic w linii nie mogą być używane z wyrażeniami kolekcji.
- CS9193: Argument "argument" może nie zostać przekazany ze słowem kluczowym "ref".
- CS9194: Argument "argument" nie może być przekazany ze słowem kluczowym "out"
- CS9195: Argument "argument" nie może być przekazany ze słowem kluczowym "in"
- CS9196: Funkcja "wyrażenie kolekcji" nie jest dostępna w wersji C# "version". Użyj wersji języka "requiredVersion" lub nowszej.
- CS9197: Funkcja "tablic wbudowanych" nie jest dostępna w języku C# "version". Użyj wersji językowej "requiredVersion" lub nowszej.
- CS9198: Funkcja "ref i unsafe w metodach asynchronicznych i iteratorowych" nie jest dostępna w języku C# "version". Użyj wersji językowej "requiredVersion" lub nowszej.
- CS9199: Funkcja 'kolekcja' nie jest dostępna w C# "version". Użyj wersji językowej "requiredVersion" lub nowszej.
- CS9202: Funkcja "ref readonly parameters" nie jest dostępna w języku C# "version". Użyj wersji językowej "requiredVersion" lub nowszej.
- CS9208: operator "nameof" nie może być używany w dostępie do tablicy wbudowanej.
- CS9209: Nie można użyć właściwości "property" zwracającej odwołania jako argumentu wartości.
- CS9211: Wyrażenie musi być typu "type", ponieważ jest przypisywane przez odwołanie
- CS9212: Nie można użyć wyrażenia kolekcji jako wartości w stałej instrukcji
- CS9217: Lokalna zmienna 'ref' nie może być zachowana poza granicą 'await' lub 'yield'.
- CS9218: parametr "paramName" jest strukturą ref i nie może być typem parametru
- CS9221: Typ "type" nie może być strukturą ref ani parametrem typu pozwalającym na użycie struktur ref, aby użyć go jako parametr "parametr" w typie ogólnym lub metodzie "member"
- CS9223: Nie można użyć struktury zawierającej pola "ref" w wyrażeniu kolekcji.
- CS9228: Niezwiązana deklaracja struktury ref jest niedozwolona
- CS9232: Deklaracje metody częściowej mają różnice w sygnaturze.
- CS9233: Modyfikator "plik" może być używany tylko na typach zdefiniowanych na najwyższym poziomie w jednostce kompilacji
Aby poprawnie utworzyć wyrażenia kolekcji z atrybutami konstruktora kolekcji, postępuj zgodnie z tymi wymaganiami. Aby uzyskać więcej informacji, zobacz Wyrażenia kolekcji.
- Upewnij się, że typ docelowy ma typ iteracji, który obsługuje
foreach(CS9188). - Nie używaj typów ogólnych jako typów konstruktorów kolekcji (CS9185).
- Sprawdź, czy nazwa metody określona w pliku
CollectionBuilderAttributejest prawidłowa (CS9186). - Zastosuj
CollectionBuilderAttributetylko przy użyciu metod statycznych, które pasują do wymaganego podpisu: zwracają typ kolekcji i przyjmująReadOnlySpan<T>parametr, gdzieTodpowiada typowi elementu (CS9180, CS9181, CS9182, CS9183, CS9187, CS9190). - Upewnij się, że zwracany typ jest zgodny i nie jest abstrakcyjny ani interfejs (CS9177, CS9183).
- Nie używaj struktur ref ani typów z polami ref w wyrażeniach kolekcji (CS9218, CS9221, CS9223, CS9228).
- Unikaj używania wyrażeń kolekcji w drzewach wyrażeń (CS9175).
- Użyj poprawnej wersji językowej dla wyrażeń kolekcji i powiązanych funkcji (CS9196, CS9197, CS9198, CS9199, CS9202).
Ostrzeżenia specyfikacji języka wspólnego
- CS3007: Przeciążona metoda „method”, która różni się tylko nienazwanymi typami tablic, nie jest zgodna z CLS
- CS3016: Tablice jako argumenty atrybutów nie są zgodne ze specyfikacją CLS
Aby napisać kod zgodny ze specyfikacją CLS z tablicami, postępuj zgodnie z tymi wytycznymi. Aby uzyskać więcej informacji, zobacz Niezależność języka.
- Nie twórz metod przeciążonych, które różnią się tylko w typach elementów tablicy (CS3007).
- Nie używaj tablic jako argumentów atrybutów (CS3016).
CS3007 występuje, jeśli masz przeciążoną metodę, która przyjmuje poszarpaną tablicę, a jedyną różnicą między sygnaturami metody jest typ elementu tablicy. Aby uniknąć tego błędu, rozważ użycie tablicy prostokątnej, a nie tablicy postrzępionej lub, jeśli zgodność CLS nie jest potrzebna, usuń CLSCompliantAttribute atrybut. Aby uzyskać więcej informacji na temat zgodności clS, zobacz Niezależność języka i składniki niezależne od języka.
CS3016 wskazuje, że nie jest zgodny z Specyfikacją Wspólnego Języka (CLS) podczas przekazywania tablicy do atrybutu. Aby uzyskać więcej informacji na temat zgodności CLS, zobacz Niezależność języka i składniki niezależne od języka.