Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale aşağıdaki derleyici hatalarını kapsar:
- CS0022: [] içindeki dizin sayısı yanlış, beklenen 'sayı'
- CS0178: Geçersiz derece belirtici: beklenen '
,
' veya ']
' - CS0248: Negatif boyutlu bir dizi oluşturulamıyor
- CS0270: Dizi boyutu değişken bildiriminde belirtilemez ('
new
' ifadesiyle başlatmayı deneyin) - CS0611: Dizi öğeleri türünde olamaz
- CS0623: Dizi başlatıcılar yalnızca bir değişkende veya alan başlatıcıda kullanılabilir. Bunun yerine yeni bir ifade kullanmayı deneyin.
- CS0650: Hatalı dizi bildirimcisi: Yönetilen bir dizi bildirmek için rank tanımlayıcısı değişkenin tanımlayıcısının önüne yer alır. Sabit boyutlu arabellek alanı bildirmek için, alan türünden önce sabit anahtar sözcüğünü kullanın.
- CS0719: Dizi öğeleri statik türde olamaz
- CS0747: Geçersiz başlatıcı üye bildirimcisi.
- CS0820: Dizi başlatıcı örtük olarak yazılan yerel bir yerel öğeye atanamıyor
- CS0826: Örtük olarak yazılan dizi için en iyi tür bulunamadı.
- CS0846: İç içe dizi başlatıcı bekleniyor
- CS1063: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS1552: Dizi türü tanımlayıcısı,
[]
parametre adından önce görünmelidir - CS1586: Dizi oluşturma işlemi dizi boyutuna veya dizi başlatıcıya sahip olmalıdır
- CS1920: Öğe başlatıcı boş olamaz.
- CS1921: En iyi aşırı yüklenmiş yöntem eşleşmesi başlatıcı öğesi için yanlış imza içeriyor. Başlatılabilir
Add
, erişilebilir bir örnek yöntemi olmalıdır. - CS1925: Koleksiyon başlatıcı ile 'type' türünde nesne başlatılamıyor.
- CS1950: Koleksiyon başlatıcısı için en iyi aşırı yüklenmiş Add yönteminde bazı geçersiz bağımsız değişkenler vardır.
- CS1954: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş yöntem eşleşmesi kullanılamaz. '
Add
' koleksiyon başlatıcı yöntemlerininref
veyaout
parametreleri olamaz. - CS9174: Tür oluşturulamaz olduğundan koleksiyon değişmez değeriyle tür başlatılamıyor.
- CS9176: Koleksiyon değişmez değeri için hedef tür yok.
- CS9185: CollectionBuilderAttribute oluşturucu türü genel olmayan bir sınıf veya yapı olmalıdır.
- CS9186: CollectionBuilderAttribute yöntemi adı geçersiz.
- CS9187: Beklenen imzaya sahip erişilebilir bir yöntem bulunamadı: türünde tek bir parametreye
ReadOnlySpan<T>
sahip statik bir yöntem ve doğru dönüş türü - CS9188: Türünde CollectionBuilderAttribute var ancak öğe türü yok.
- CS9203: Bu türdeki bir koleksiyon ifadesi, geçerli kapsamın dışında kullanıma sunulduğundan bu bağlamda kullanılamaz.
- CS9210: Bu sürümü System.Collections.Immutable.ImmutableArray<T>koleksiyon ifadeleriyle kullanılamaz.
Ayrıca, bu makalede aşağıdaki uyarılar ele alınmıştır:
- CS1062: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS1064: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS3007: Yalnızca adsız dizi türleriyle farklılık gösteren aşırı yüklenmiş 'method' yöntemi CLS uyumlu değil
- CS3016: Öznitelik bağımsız değişkenleri olarak diziler CLS uyumlu değil
- CS0251: Bir diziyi negatif dizinle dizinleme (dizi dizinleri her zaman sıfırdan başlar)
- CS9208: Koleksiyon ifadesi beklenmeyen yığın ayırmalarına neden olabilir. Açıkça bir dizi oluşturmayı ve sonra ayırmayı açık hale getirmek için son türe dönüştürmeyi göz önünde bulundurun.
- CS9209: Koleksiyon ifadesi , '
..
' yaymalarının kullanılması nedeniyle beklenmeyen yığın ayırmalarına neden olabilir. Açıkça bir dizi oluşturmayı ve sonra ayırmayı açık hale getirmek için son türe dönüştürmeyi göz önünde bulundurun.
Diziler, koleksiyon başlatıcıları ve koleksiyon ifadeleri hakkında daha fazla bilgiyi aşağıdaki makalelerde bulabilirsiniz:
Geçersiz koleksiyon başlatıcısı
Aşağıdaki hatalar, bir koleksiyon başlatıcısı için derleyici tarafından oluşturulan kodun geçersiz olduğunu gösterir:
- CS0747: Geçersiz başlatıcı üye bildirimcisi.
- CS1063: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS1920: Öğe başlatıcı boş olamaz.
- CS1921: En iyi aşırı yüklenmiş yöntem eşleşmesi başlatıcı öğesi için yanlış imza içeriyor. Başlatılabilir
Add
, erişilebilir bir örnek yöntemi olmalıdır. - CS1950: Koleksiyon başlatıcısı için en iyi aşırı yüklenmiş Add yönteminde bazı geçersiz bağımsız değişkenler vardır.
- CS1954: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş yöntem eşleşmesi kullanılamaz. '
Add
' koleksiyon başlatıcı yöntemlerininref
veyaout
parametreleri olamaz. - CS9174: Tür oluşturulamaz olduğundan koleksiyon değişmez değeriyle tür başlatılamıyor.
- CS9176: Koleksiyon değişmez değeri için hedef tür yok.
- CS9203: Bu türdeki bir koleksiyon ifadesi, geçerli kapsamın dışında kullanıma sunulduğundan bu bağlamda kullanılamaz.
- CS9210: Bu sürümü System.Collections.Immutable.ImmutableArray<T>koleksiyon ifadeleriyle kullanılamaz.
Derleyici aşağıdaki uyarıyı da oluşturabilir:
- CS1062: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS1064: Koleksiyon başlatıcı öğesi için en iyi aşırı yüklenmiş Add yöntemi eskidir.
- CS9208: Koleksiyon ifadesi beklenmeyen yığın ayırmalarına neden olabilir. Açıkça bir dizi oluşturmayı ve sonra ayırmayı açık hale getirmek için son türe dönüştürmeyi göz önünde bulundurun.
- CS9209: Koleksiyon ifadesi , '
..
' yaymalarının kullanılması nedeniyle beklenmeyen yığın ayırmalarına neden olabilir. Açıkça bir dizi oluşturmayı ve sonra ayırmayı açık hale getirmek için son türe dönüştürmeyi göz önünde bulundurun.
Hataların tümü, bir koleksiyon başlatıcısı için derleyici tarafından oluşturulan kodun geçersiz olduğunu gösterir. Şu noktaları denetleyin:
- Koleksiyon başlatıcısı bir öğe dizisi içerir. Koleksiyon örneğindeki ayar özelliklerini aynı başlatıcıya öğe ekleyerek karıştıramazsınız.
- Küme ayraçları (
{
ve}
) içeren bir koleksiyon başlatıcısı boş olamaz. - sınıfı IEnumerable uygulamalı ve ortak
Add
bir yönteme sahip olmalıdır. - Uyumlu
Add
bir yöntem erişilebilir olmalı ve koleksiyon öğeleriyle aynı türde bir parametre almalıdır. parametresi veyaout
değiştiricisiniref
içeremez. - Aşırı yükleme çözümlemesi, daha iyi bir eşleşme olarak bir
Add
yöntem seçmelidir. Eşit derecede iyi olan birden çok eşleşen yöntem olamaz. - Koleksiyon ifadeleri, bir koleksiyon türünün açıkça yazılan değişkenlerini başlatabilir. Değişken bir koleksiyon veya dizi türü değilse veya örtük olarak (kullanılarak
var
) yazıldıysa, koleksiyon başlatıcı kullanılamaz. ref struct
Gibi System.Span<T> bir tür, başvuru güvenliğini ihlal eden bir koleksiyon ifadesiyle başlatılamaz.- Koleksiyon ifadesi, geçerli sürümü kullanarak doğru bir System.Collections.Immutable.ImmutableArray<T> şekilde başlatamaz. Çalışma zamanının farklı bir sürümünü kullanın veya başlatma ifadesini değiştirin.
Uyarılar, tüm yayılma öğeleri dahil olmak üzere koleksiyon ifadesinin bellek ayırabileceğini gösterir. Farklı depolama alanı oluşturma ve dönüştürme daha verimli olabilir.
Geçersiz dizi başlatıcı
- CS0623: Dizi başlatıcılar yalnızca bir değişkende veya alan başlatıcıda kullanılabilir. Bunun yerine yeni bir ifade kullanmayı deneyin.
- CS0846: İç içe dizi başlatıcı bekleniyor
- CS1925: Koleksiyon başlatıcı ile 'type' türünde nesne başlatılamıyor.
Bu hatalar geçersiz bir başlatıcı oluşturduğunuzu gösterir. Bunun olası nedeni dengesiz küme ayraçları {
ve }
bir veya daha fazla öğe veya alt dizi etrafında olmasıdır. Başlatma ifadesinin pürüzlü dizi başlatmadaki dizi sayısıyla eşleştiğinden ve küme ayraçlarının dengeli olduğundan emin olun.
Geçersiz dizi öğesi erişimi
- CS0022: [] içindeki dizin sayısı yanlış, beklenen 'sayı'
- CS0251: Bir diziyi negatif dizinle dizinleme (dizi dizinleri her zaman sıfırdan başlar)
Dizide bildirilen her eksenin dizinini belirterek bir dizinin öğesine erişirsiniz. Dizinler, dizi adı arasında [
ve ]
sonrasındadır. Dizi dizinleri için iki kural vardır:
- Dizi bildiriminde kullanılan dizin sayısıyla aynı sayıda dizin belirtmelisiniz. Dizinin bir boyutu varsa, bir dizin belirtmeniz gerekir. Dizinin üç boyutu varsa, üç dizin belirtmeniz gerekir.
- Tüm dizinler negatif olmayan tamsayılar olmalıdır.
Geçersiz dizi sırası
- CS0178: Geçersiz derece belirtici: beklenen '
,
' veya ']
' - CS0650: Hatalı dizi bildirimcisi: Yönetilen bir dizi bildirmek için rank tanımlayıcısı değişkenin tanımlayıcısının önüne yer alır. Sabit boyutlu arabellek alanı bildirmek için, alan türünden önce sabit anahtar sözcüğünü kullanın.
- CS1552: Dizi türü tanımlayıcısı,
[]
parametre adından önce görünmelidir
Dizi bildirimi sırayla aşağıdaki belirteçlerden oluşur:
- Dizi öğelerinin türü. Örneğin,
int
,string
veyaSomeClassType
. - İsteğe bağlı olarak birden çok boyutu temsil eden virgüller de dahil olmak üzere dizi köşeli ayraçları.
- Değişken adı.
Dizi başlatma dizi boyutlarını belirttiğinde, aşağıdaki özellikleri belirtebilirsiniz:
- Küme ayraçlarındaki bir dizi öğe (
{
ve}
) - Boş köşeli ayraçlar
- Köşeli ayraç içine alınmış bir veya daha fazla virgül
Örneğin, geçerli dizi bildirimleri şunlardır:
int[] anArrayOfIntegers;
string[,,] threeDimensionalStringArray;
Daha fazla bilgi için dizi başlatıcıları hakkında C# belirtimi (C# Dil Belirtimi) bölümüne bakın.
Geçersiz dizi uzunluğu
- CS0248: Negatif boyutlu bir dizi oluşturulamıyor
- CS0270: Dizi boyutu değişken bildiriminde belirtilemez ('yeni' ifadeyle başlatmayı deneyin
- CS1586: Dizi oluşturma işlemi dizi boyutuna veya dizi başlatıcıya sahip olmalıdır
Bir dizinin her boyutunun uzunluğu, bildiriminin değil, dizi başlatma işleminin bir parçası olarak belirtilmelidir. Her boyutun uzunluğu pozitif olmalıdır. Diziyi ayırmak için bir new
ifade kullanarak veya tüm öğeleri atamak için bir dizi başlatıcı kullanarak uzunluğu belirtebilirsiniz. Aşağıdaki örnekte her iki mekanizma da gösterilmektedir:
int[] fiveIntegers = new int[5];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
Geçersiz öğe türü
- CS0611: Dizi öğeleri 'type' türünde olamaz
- CS0719: Dizi öğeleri statik türde olamaz
- CS0820: Dizi başlatıcı örtük olarak yazılan yerel bir yerel öğeye atanamıyor
- CS0826: Örtük olarak yazılan dizi için en iyi tür bulunamadı.
Dizi türü olarak kullanılamayabilecek bazı türler vardır. Bu türler ve'i System.ArgIteratoriçerirSystem.TypedReference. Bir sınıfın örnekleri static
oluşturulamadığından dizi static
türü sınıf olamaz.
Dizileri örtük olarak yazılan yerel değişkenler olarak bildirebilirsiniz. Dizi bir new
ifade kullanılarak başlatılmalıdır. Ayrıca, bir dizi başlatıcıdaki tüm öğelerin en iyi ortak türe sahip olması gerekir. Aşağıdaki örneklerde örtük olarak yazılan bir dizinin nasıl bildirıldığı gösterilmektedir:
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 };
Aşağıdaki tekniklerden herhangi birini kullanarak en iyi ortak türü sağlayabilirsiniz:
- Diziye açık bir tür verin.
- Tüm dizi öğelerine aynı türü verin.
- Soruna neden olabilecek öğeler üzerinde açık atamalar sağlayın.
Geçersiz koleksiyon oluşturucusu
Aşağıdaki hatalar koleksiyon oluşturucusu türünüzün hatalarını gösterir:
- CS9185: Oluşturucu
CollectionBuilderAttribute
türü genel olmayan bir sınıf veya yapı olmalıdır. - CS9186:
CollectionBuilderAttribute
Yöntem adı geçersiz. - CS9187: Beklenen imzaya sahip erişilebilir bir yöntem bulunamadı: türünde tek bir parametreye
ReadOnlySpan<T>
sahip statik bir yöntem ve doğru dönüş türü. - CS9188: Tür bir
CollectionBuilderAttribute
öğe türüne sahip değil.
Bu hatalar koleksiyon oluşturucusu türünüzün değiştirilmesi gerektiğini gösterir. Aşağıdaki kuralları unutmayın:
- Koleksiyon türü bir yineleme türüne sahip olmalıdır. Başka bir deyişle, türü koleksiyon olarak kullanabilirsiniz
foreach
. - Koleksiyon oluşturucu türü genel bir tür olamaz.
- üzerinde System.Runtime.CompilerServices.CollectionBuilderAttribute belirtilen yöntem adı geçerli bir yöntem adı olmalıdır. Örneğin, sonlandırıcı veya geçersiz tanımlayıcı karakterleri içeren başka bir ad olamaz.
- Koleksiyon oluşturucu yöntemi erişilebilir bir statik yöntem olmalıdır. Koleksiyon türünü döndürmelidir ve koleksiyonun öğe türüyle
ReadOnlySpan<T>
eşleşen birT
parametresini almalıdır.
Ortak dil belirtimi uyarıları
- CS3007: Yalnızca adsız dizi türleriyle farklılık gösteren aşırı yüklenmiş 'method' yöntemi CLS uyumlu değil
- CS3016: Öznitelik bağımsız değişkenleri olarak diziler CLS uyumlu değil
CS3007, pürüzlü bir dizi alan aşırı yüklenmiş bir yönteminiz varsa oluşur ve yöntem imzaları arasındaki tek fark dizinin öğe türüdür. Bu hatayı önlemek için, pürüzlü dizi yerine dikdörtgen bir dizi kullanmayı göz önünde bulundurun veya CLS Uyumluluğu gerekli değilse özniteliğini CLSCompliantAttribute kaldırın. CLS Uyumluluğu hakkında daha fazla bilgi için bkz . Dil bağımsızlığı ve dilden bağımsız bileşenler.
CS3016, bir diziyi bir özniteliğe geçirmek için Ortak Dil Belirtimi (CLS) ile uyumlu olmadığını gösterir. CLS uyumluluğu hakkında daha fazla bilgi için bkz . Dil bağımsızlığı ve dilden bağımsız bileşenler.