SORU
24 HAZİRAN 2012, Pazar


&; 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
24 HAZİRAN 2012, Pazar


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CruzerLite

    CruzerLite

    1 EKİM 2011
  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012