CA2104: Salt okunur kesilebilir başvuru türleri bildirmeyin
Ürün | Değer |
---|---|
RuleId | CA2104 |
Kategori | Microsoft.Security |
Hataya neden olan değişiklik | Hataya neden olmayan |
Dekont
CA2104 kuralı kullanımdan kaldırıldı ve Visual Studio'nun gelecekteki bir sürümünde kaldırılacak. Bir türün gerçek değişmezliğini belirlemek için gereken karmaşık analiz nedeniyle çözümleyici olarak uygulanmaz.
Neden
Dışarıdan görünen bir tür, kesilebilir başvuru türü olan dışarıdan görünen bir salt okunur alan içerir.
Dekont
Bu kural kullanım dışı bırakıldı. Daha fazla bilgi için bkz . Kullanım dışı kurallar.
Kural açıklaması
Kesilebilir tür, örnek verileri değiştirilebilen bir türdür. System.Text.StringBuilder sınıfı, değiştirilebilir başvuru türüne bir örnektir. Sınıfın bir örneğinin değerini değiştirebilen üyeler içerir. Sabit başvuru türüne örnek olarak sınıfı verilmiştir System.String . Örneği oluşturulduktan sonra değeri hiçbir zaman değişemez.
Başvuru türü alanındaki (veya C++'daki işaretçi) salt okunur değiştirici (C#'ta salt okunur , Visual Basic'te ReadOnly ve C++'da const ) alanın başvuru türünün farklı bir örneğiyle değiştirilmesini engeller. Ancak değiştirici, alanın örnek verilerinin başvuru türü aracılığıyla değiştirilmesini engellemez.
Bu kural, aslında değişmez bir tür için istemeden bir ihlal gösterebilir. Bu durumda uyarıyı bastırmak güvenlidir.
Salt okunur dizi alanları bu kuraldan muaf tutulur, ancak bunun yerine CA2105 ihlaline neden olur: Dizi alanları salt okunur kural olmamalıdır.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için salt okunur değiştiriciyi kaldırın veya hataya neden olan bir değişiklik kabul edilebilirse alanı sabit bir türle değiştirin.
Uyarıların ne zaman bastırılması gerekiyor?
Alan türü sabitse, bu kuraldan gelen bir uyarıyı engellemek güvenlidir.
Örnek
Aşağıdaki örnekte, bu kuralın ihlaline neden olan bir alan bildirimi gösterilmektedir:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin