&; Temsilci çıkarma sonucu tahmin edilemez" ReSharper/C"#?
myDelegate -= eventHandler
ReSharper (sürüm 6) sorunlar kullanırken:
Temsilci çıkarma sonucu tahmin edilemez
Bunun arkasındaki rasyonel explained by JetBrains here. Açıklama mantıklı ve okuduktan sonra, delegeler üzerinde -
tüm kullanır şüphe etmeye başladım.
Nasıl o zaman,
- ReSharper huysuz yapmadan oto dışı bir olay yazabilirim?
- ya da, daha iyi ve/veya "doğru" bir şekilde bunu uygulamak için?
- ya da, ReSharper görmezden gelebilir miyim?
Burada basitleştirilmiş kod:
public delegate void MyHandler (object sender);
MyHandler _myEvent;
public event MyHandler MyEvent
{
add
{
_myEvent = value;
DoSomethingElse();
}
remove
{
_myEvent -= value; // <-- ReSharper warning here
}
}
CEVAP
Yok maalesef! yok ol ReSharper uyarısı ilk bölümü sadece delege çıkarma listeleri için geçerlidir. Kodunuzda, her zaman tek bir temsilci çıkarma. İkinci bölüm yinelenen bir temsilci uzaklaştırıldıktan sonra delegelerin sipariş bahsediyor. Olay gerçekten de etkilemiyor yani aboneler için icra emri garantisi yok.
Yukarıdaki mekaniği öngörülemeyen sonuçlara yol açabilir beri, ReSharper temsilci çıkarma operatörü karşılaştığında bir uyarı verir.
Çok noktaya yayın temsilci çıkarma sorunlar olabilir çünkü bu uyarı verme ReSharper, bu dili tamamen kınayan bir özellik değil. Neyse ki bu sorunlar saçak durumda ve onları karşılaşmanız olası değildir sadece basit olayları açıklamak. add
/remove
kendi işleyicileri uygulamak için iyi bir yol yoktur-sadece dikkat çekmek.
"Genellikle yararlı. hangi uyarıları, hassasiyeti alamadım" bu kadar İpucu bu mesaj için konuştu ReSharper uyarı seviyesi öneririm
Resharper "proje bile sembol gide...
Neden ReSharper söyle&; örtülü olarak ...
ReSharper uyarıyor: "genel tür St...
Geri" svn;?bir kaza sonucu " k...
Böyle büyük mükafat 4 uyarı "İfad...