Usuwanie błędów i ostrzeżeń w deklaracjach tablic i kolekcjach oraz wyrażeniach inicjowania

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 Add musi 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ć ref lub out parametró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 Add musi 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ów ref ani out.
  • 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).
  • Add Sprawdź, czy metoda jest dostępna, przyjmuje jeden parametr pasujący do typu elementu i nie używa ref ani out modyfikatorów (CS1921, CS1954).
  • Rozwiąż niejednoznaczne Add przeciąż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 struct typó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:

  1. Typ elementów tablicy (na przykład , intstring, lub SomeClassType).
  2. Nawiasy tablicowe, opcjonalnie łącznie z przecinkami dla wielu wymiarów.
  3. 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 new lub 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 static klas jako typów elementów tablicy, ponieważ nie można utworzyć wystąpień (CS0719).
  • Zainicjuj niejawnie wpisane tablice za pomocą new wyraż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). new Uż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 CollectionBuilderAttribute jest prawidłowa (CS9186).
  • Zastosuj CollectionBuilderAttribute tylko przy użyciu metod statycznych, które pasują do wymaganego podpisu: zwracają typ kolekcji i przyjmują ReadOnlySpan<T> parametr, gdzie T odpowiada 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.