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.
C# derleyicisi, dize ilişkilendirme ifadelerini veya dize ilişkilendirme işleyicilerini yanlış söz dizimi ile bildirdiğinizde veya desteklenmeyen bağlamlarda kullandığınızda hatalar ve uyarılar oluşturur. Bu tanılamalar, dize ilişkilendirmeleri veya özel dize ilişkilendirme işleyicileriyle ilgili sorunları belirlemenize yardımcı olur.
- CS8361: ':' ilişkilendirmeyi sonlandırdığından koşullu ifade doğrudan dize ilişkilendirmesinde kullanılamaz. Koşullu ifadeyi parantez içinde tutun.
- CS8941: İlişkili dize işleyici yöntemi yanlış biçimlendirilmiş. 'void' veya 'bool' döndürmez.
- CS8942: İlişkili dize işleyici yöntemi tutarsız dönüş türüne sahip. Farklı bir tür döndürmesi bekleniyor.
- CS8946: Tür, ilişkilendirilmiş bir dize işleyici türü değildir.
- CS8947: Parametre, parametre listesinde ilişkilendirilmiş dize işleyici parametresinden sonra gerçekleşir, ancak ilişkilendirilmiş dize işleyicisi dönüştürmeleri için bağımsız değişken olarak kullanılır. Bu, çağıranın çağrı sitesinde adlandırılmış bağımsız değişkenlerle parametreleri yeniden sıralamasını gerektirir. İlişkili dize işleyici parametresini ilgili tüm bağımsız değişkenlerin arkasına yerleştirmeyi göz önünde bulundurun.
- CS8953: İlişkili dize işleyicisi yapısı dinamik kullanamaz. Bunun yerine el ile örnek oluşturun.
- CS8976: Örneği dizinleyen interpolasyonlu dize işleyicisi dönüşümleri, dizinleyici üyesi başlatıcılarında kullanılamaz.
- CS9205: İlişkili dize bekleniyordu.
- CS9325: Bu bağlamda ilişkilendirilmiş dize işleyici bağımsız değişkenlerine izin verilmez.
Enterpolasyon ifadesi söz dizimi
- CS8361 - ':' ilişkilendirmeyi sonlandırdığından koşullu ifade doğrudan dize ilişkilendirmesinde kullanılamaz. Koşullu ifadeyi parantez içinde tutun.
- CS9205 - Enterpolasyonlu dize bekleniyordu.
Bu hataları düzeltmek için aşağıdaki teknikleri uygulayın:
- Koşullu ifadeleri (üçlü
?:operatörü) bir interpolasyon boşluğunda (CS8361) kullanırken parantez içine alın. İki nokta karakteri, bir biçim dizesini tanıtan interpolasyon dizelerinde özel bir anlama sahiptir, bu nedenle derleyici içindeki:'yi koşullu ifadenin bir parçası yerine bir biçim tanımlayıcısı olarak yorumlar. Örneğin,$"{(x > 0 ? "positive" : "negative")}"yerine$"{x > 0 ? "positive" : "negative"}"kullanın. - Bir dizenin beklendiği yerde (CS9205) interpolasyonlu bir dize değişmez değeri sağladığınızdan emin olun. Bu hata, derleyici interpolasyonlu bir dizeyi (başlayarak
$"veya$@") beklediğinde ancak farklı bir ifade türüyle karşılaştığında oluşur.
Ara dize işleyici türü uygulaması
- CS8941 - İlişkili dize işleyici yöntemi yanlış biçimlendirilmiş. 'void' veya 'bool' döndürmez.
- CS8942 - İlişkili dize işleyici yöntemi tutarsız dönüş türüne sahip. Farklı bir tür döndürmesi bekleniyor.
- CS8946 - Tür, ilişkilendirilmiş bir dize işleyici türü değildir.
Özel bir ilişkilendirilmiş dize işleyicisi uyguladığınızda aşağıdaki teknikleri uygulayın:
- Tüm
AppendLiteralveAppendFormattedyöntemlerin yavoidya dabool(CS8941) döndürdüğünden emin olun. İşleyici deseni, derleyicinin ilişkilendirme kodunu düzgün bir şekilde oluşturabilmesi için bu yöntemlerin bu dönüş türlerinden birine sahip olmasını gerektirir. Döndürülenboolmetotlar, işleyici daha fazla işlemeye gerek olmadığını belirlediğinde kısa devre yapmayı etkinleştirir. - İşleyici türündeki tüm ekleme yöntemlerinin aynı dönüş türünü (CS8942) kullandığından emin olun. Bir yöntem döndürürse
void, tüm ekleme yöntemleri döndürmelidirvoid. Biribooldöndürürse, hepsininbooldöndürülmesi gerekir. Dönüş türlerinin karıştırılması, derleyicinin tutarlı ilişkilendirme kodu oluşturmasını engeller. - InterpolatedStringHandlerAttribute işleyici türüne uygulayın ve geçerli bir oluşturucusunun (CS8946) olduğundan emin olun. İlişkilendirilmiş dize işleyici türü bu öznitelikle işaretlenmeli ve derleyici tarafından tanınmak için işleyici desenini izlemelidir.
İlişkili dize işleyicisi kullanım kısıtlamaları
- CS8947 - Parametre, parametre listesindeki ilişkilendirilmiş dize işleyici parametresinden sonra gerçekleşir, ancak ilişkilendirilmiş dize işleyicisi dönüştürmeleri için bağımsız değişken olarak kullanılır. Bu, çağıranın çağrı sitesinde adlandırılmış bağımsız değişkenlerle parametreleri yeniden sıralamasını gerektirir. İlişkili dize işleyici parametresini ilgili tüm bağımsız değişkenlerin arkasına yerleştirmeyi göz önünde bulundurun.
- CS8953 - İlişkili dize işleyicisi yapısı dinamik kullanamaz. '{0}' örneğini el ile oluşturun.
- CS8976 - İndekslenen örneğe referans veren interpolasyona tabi tutulan dize işleyicisi dönüştürmeleri, dizinleyici üye başlatıcılarında kullanılamaz.
- CS9325 - Bu bağlamda, ilişkilendirilmiş dize işleyicisi bağımsız değişkenlerine izin verilmez.
Yerleştirilmiş dize işleyicilerini kullandığınızda, aşağıdaki teknikleri uygulayın:
- Yöntem parametrelerini yeniden sıralayarak, tarafından InterpolatedStringHandlerArgumentAttribute kullanılan parametrelerin ilişkilendirilmiş dize işleyici parametresinden (CS8947) önce görünmesini sağlayın. Bu uyarı, çağıranların yöntemi düzgün bir şekilde çağırmak için adlandırılmış bağımsız değişkenler kullanması gerektiğini gösterir ve bu da kullanılabilirliği azaltır. İşleyici parametresini bağlı olduğu tüm bağımsız değişkenlerin arkasına yerleştirin.
- Yazılan değerleri, ilişkilendirilmiş dize işleyicisi dönüştürmeleri (
dynamic) için bağımsız değişken olarak kullanmayın. Derleyici, dinamik değerler söz konusu olduğunda derleme zamanında işleyicinin yapı gereksinimlerini belirleyemez. Bunun yerine, işleyici örneğini el ile oluşturun ve yöntemlerini doğrudan çağırın. - Dizin oluşturucu üyesi başlatıcılarında (CS8976) başlatılan örneğe başvuran ilişkilendirilmiş dizeler kullanmayın. Nesne başlatma sırasında, örnek henüz tam olarak inşa edilmemiştir, bu nedenle buna
thisile başvuran işleyici dönüştürmelerine izin verilmez. Başlatmanın ardından indeksleyici değerini ayarlamak için ayrı bir ifade kullanın. - Interpolasyonlu dize işleyici bağımsız değişkenlerini (CS9325) kullandığınız bağlamı kontrol edin. Bazı bağlamlar işleyici bağımsız değişken özniteliklerini desteklemez. Bu gibi durumlarda, normal bir interpolasyonlu dize kullanın veya işleyiciyi el ile oluşturun.