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ı ve uyarılarını kapsar:
- CS9125: 'SizeConst' öznitelik parametresi belirtilmelidir.
-
CS9164: Atanabilir bir değişken olmadığından ifade
Span<T>dönüştürülemiyor -
CS9165: başvuru tarafından geçirilemediği veya döndürülemediğinden
ReadOnlySpan<T>ifade dönüştürülemiyor - CS9166: Dizin satır içi dizinin sınırlarının dışında
- CS9167: Satır içi dizi uzunluğu 0'dan büyük olmalıdır.
- CS9168: Satır içi dizi yapısı açık bir düzene sahip olmamalıdır.
- CS9169: Satır içi dizi yapısı, başvuru alanı olmaması gereken bir ve yalnızca bir örnek alanı bildirmelidir.
-
CS9172: Satır içi dizi türünün öğelerine yalnızca ,
intveyaSystem.Indexöğesine örtük olarak dönüştürülebilenSystem.Rangetek bir bağımsız değişkenle erişilebilir. - CS9173: Satır içi dizi erişiminin adlandırılmış bağımsız değişken tanımlayıcısı olmayabilir
- CS9180: Satır içi dizi öğesi alanı gerekli, salt okunur, geçici veya sabit boyutlu bir arabellek olarak bildirilemez.
- CS9181: Satır içi dizi dizin oluşturucu, öğe erişim ifadesi için kullanılmaz.
- CS9182: Satır içi dizi 'Slice' yöntemi, öğe erişim ifadesi için kullanılmaz.
- CS9183: Satır içi dizi dönüştürme işleci, bildirim türü ifadesinden dönüştürme için kullanılmaz.
-
CS9184: 'Satır içi diziler' dil özelliği, öğe alanı '
ref' alanı olan veya tür bağımsız değişkeni olarak geçerli olmayan türe sahip satır içi dizi türleri için desteklenmez. -
CS9189:
foreachtürdeki satır içi dizideki deyim desteklenmiyor - CS9259: Öznitelik System.Runtime.CompilerServices.InlineArrayAttribute bir kayıt yapısına uygulanamaz.
Satır içi dizi bildirimi
Satır içi dizileri tek bir alana sahip bir struct tür ve dizinin uzunluğunu belirten bir öznitelik olarak bildirirsiniz. Derleyici geçersiz satır içi dizi bildirimleri için aşağıdaki hataları oluşturur:
- CS9125: 'SizeConst' öznitelik parametresi belirtilmelidir.
- CS9167: Satır içi dizi uzunluğu 0'dan büyük olmalıdır.
- CS9168: Satır içi dizi yapısı açık bir düzene sahip olmamalıdır.
- CS9169: Satır içi dizi yapısı, başvuru alanı olmaması gereken bir ve yalnızca bir örnek alanı bildirmelidir.
- CS9180: Satır içi dizi öğesi alanı gerekli, salt okunur, geçici veya sabit boyutlu bir arabellek olarak bildirilemez.
-
CS9184: 'Satır içi diziler' dil özelliği, öğe alanı '
ref' alanı olan veya tür bağımsız değişkeni olarak geçerli olmayan türe sahip satır içi dizi türleri için desteklenmez. - CS9259: Öznitelik System.Runtime.CompilerServices.InlineArrayAttribute bir kayıt yapısına uygulanamaz.
Bu dizileri düzeltmek için aşağıdakilerin doğru olduğundan emin olun:
- bağımsız değişkeni System.Runtime.CompilerServices.InlineArrayAttribute pozitif bir tamsayıdır.
- Kapsayan
structherhangi bir açık düzen belirtmez. - Kapsayan
structtek bir örnek alanı vardır ve bu örnek alanı birrefalan değildir. - Tek örnek alanı sabit boyutlu bir arabellek değildir.
- Tek örnek alanı ,
requiredveyavolatiledeğiştiricilerini içermezreadonly. - Değiştiriciyi
recordsatır içi dizi bildiriminizden kaldırın.
Öğe erişimi
Satır içi dizinin öğelerine herhangi bir diziyle aynı şekilde erişirsiniz. Derleyici yanlış öğe erişiminden aşağıdaki hataları yayar:
- CS9166: Dizin satır içi dizinin sınırlarının dışında
-
CS9172: Satır içi dizi türünün öğelerine yalnızca ,
intveyaSystem.Indexöğesine örtük olarak dönüştürülebilenSystem.Rangetek bir bağımsız değişkenle erişilebilir. - CS9173: Satır içi dizi erişiminin adlandırılmış bağımsız değişken tanımlayıcısı olmayabilir
-
CS9189:
foreachtürdeki satır içi dizideki deyim desteklenmiyor
Ayrıca, bir dizin oluşturucu bildirdiğinizde derleyici aşağıdaki uyarıyı döndürür:
- CS9181: Satır içi dizi dizin oluşturucu, öğe erişim ifadesi için kullanılmaz.
Satır içi arabelleğe yönelik oluşturulan kod, bildirilen dizin oluşturucuları atlayarak arabellek belleğine doğrudan erişir. Satır içi diziler deyimiyle foreach kullanılamaz.
Dizin oluşturucunun bağımsız değişkeni şu olmalıdır:
- Şu üç türden biri:
int, aSystem.Indexveya .System.Range - Adlandırılmış bağımsız değişken olamaz. Derleyici, öğe erişimcisini oluşturur. Parametresinin bir adı olmadığından adlandırılmış bağımsız değişkenleri kullanamazsınız.
- Dizinin sınırlarına eklenir. Tüm .NET dizilerinde olduğu gibi, satır içi dizi öğesi erişimi de sınırlar denetlenir. Dizin, satır içi dizinin sınırları içinde olmalıdır.
Span'a Dönüştürmeler
Genellikle satır içi dizilerle çalışmak için veya System.Span<T> kullanırsınızSystem.ReadOnlySpan<T>. Derleyici geçersiz dönüştürmeler için aşağıdaki hataları oluşturur:
-
CS9164: Atanabilir bir değişken olmadığından ifade
Span<T>dönüştürülemiyor -
CS9165: başvuru tarafından geçirilemediği veya döndürülemediğinden
ReadOnlySpan<T>ifade dönüştürülemiyor
Derleyici, satır içi arabelleğe doğrudan erişen kod oluşturur. Bu nedenle, bazı üyeler asla çağrılmaz. Derleyici, hiç çağrılmadan üyelerden birini yazarsanız aşağıdaki uyarıları oluşturur:
- CS9182: Satır içi dizi 'Slice' yöntemi, öğe erişim ifadesi için kullanılmaz.
- CS9183: Satır içi dizi dönüştürme işleci, bildirim türü ifadesinden dönüştürme için kullanılmaz.
Satır içi dizi, yöntemlere satır içi dizi geçirmek için örtük olarak veya'ya Span<T>ReadOnlySpan<T> dönüştürülebilir. Derleyici, bu dönüştürmelerde kısıtlamalar uygular:
- Satır içi diziyi değerine dönüştürmek için satır içi dizinin
Span<T>yazılabilir olması gerekir. Dizi salt okunursa, yazılabilirSpan<T>bir öğesine dönüştüremezsiniz. Bunun yerine kullanabilirsinizReadOnlySpan<T>. - Satır içi dizinin güvenli bağlamı, dönüştürmenin başarılı olması için en az veya'ın
Span<T>güvenli bağlamıReadOnlySpan<T>geniş olmalıdır. Yayılma alanının bağlamını sınırlamanız veya satır içi dizinin kapsamını genişletmeniz gerekir.
Ayrıca, derleyici hiçbir zaman satır içi arabellekteki bir Slice yönteme çağrı oluşturmaz. Satır içi arabelleği veya'na Span dönüştürmek için ReadOnlySpan dönüştürme işleçleri çağrılmaz. Derleyici, doğrudan bellek arabelleğinden veya System.Span<T>System.ReadOnlySpan<T> oluşturmak için kod oluşturur.