2009-08-19 14 views
25

Başka sorularda Linq sorgu sözdiziminin bir Lambda'yı derlediğini gördüm.Metodda bir Lambda ifadesi varken neden hata ayıklamayı düzenleyemiyorsunuz?

Peki, yöntemde bir Lambda ifadesi varken, neden düzenleme gösterimi ile birlikte düzenleme ve devam etmeyebilirsiniz? kodunuzu Lambda içinde değil, aynı yöntemle başka bir yerde bir Lambda'ya olmasa bile

en sinir bozucu olduğunu ve ciddiye beni her yerde sorgu notasyonu kullanarak geçiş düşünün yapıyor ne

olduğunu, yapamazsın düzenlemek-ve-devam et! Bu, istemeyen geliştiriciler üzerine yapılan acı gibi!

+0

Anlaşmalı. Düzenleme ve devam etmeyi çok kullandım ama şimdi lambdaları çok kullanıyorum, bu özelliği çoktan öldürdüm. –

+1

olası bir kopyası [Neden hata ayıklayıcıda anonim bir yöntem içeren bir yöntemi neden düzenleyemiyorum?] (Http://stackoverflow.com/questions/581967/why-can-i-not-edit-a-method-that -con-an-anonim-in-the-debugger yöntemi) – nawfal

+1

2016'da okuyanlar için, bunu şimdi VS2015'te yapabilirsiniz. Hala bazı sınırlamalar var, ama büyük ve büyük bir iş yaptılar. – matrixugly

cevap

20

Düzenleme ve devam etme, "canlı" yöntem uygulamalarını değiştirebilir, ancak türlerde hangi alanların olduğunu değiştiremez.

Lambda ifadeleri (ve anonim yöntemler), değişkenleri yakaladıklarında kendi özel türlerini oluşturabilirler. Lambda ifadesini değiştirmek, değiştirmeye ve devam etmesine neden olan türleri değiştirebilir.

Öyle geliyor bu etkisi yoktur yasasında değişiklik yapmak mümkün, ama tamamen önlemek için basitçe kolay kuşkusu olmamalıdır - Ayrıca değil başlangıç ​​ yapma değişiklikleri yapmak anlamına gelir ve sonra değişimin yarısını engellediğini bul.

(Şahsen ben ilk etapta E & C hayranı değilim, bu yüzden dikkat etmemiştim.)

+4

Teşekkürler. Neden E & C'yi sevmiyorsun? Bunun yerine ne yaparsınız? –

+9

Birim testleri kullanmayı tercih ederim. Öyleyse, yeniden başlatma hakkında endişelenmem gerekmiyor - bu demek oluyor ki her zaman baştan sona yeni kodu kullanıyorum. –

+0

İyi Açıklama, teşekkürler –

0

Emin bilmiyorum ama tahminimce endam etrafında karmaşık olmasıdır sınıflara kaldırılan yerel değişkenler olduğunda ne değişmesi gerekiyor. Hangi noktada değişikliklerin güvenli olacağını ve bu noktada doğru ve karmaşık olmaya eğilimli olmayacağını düşünerek tahmin ediyorum. 2010'daki takımlar, iş parçacığı ve yeni kullanıcı arabirimi etrafında odaklandı - belki bir sonraki sürümde alacağız.

+0

neden? Yöntemin kendisinde hata ayıklamadığınız sürece, bazı yeni IL'nin yayılacağını ve JIT'in gerektiğinde kendi işini yapacağını düşünürsünüz. Onun gibi değil, E & C'nin çalıştığı yerlerde, daha çok çalışmak zorunda olduğunu düşündüğünüz C++. – gbjbaanb

0

Kesin olarak bilmiyorum, ancak derleyicinin derleyici oluşturulmuş sınıflara kapak oluşturan lambda ifadelerini dönüştürmesiyle ilgili olduğunu varsayalım. Muhtemelen derlenmiş kodda yapılan değişiklikleri uygulamak ve mevcut durumu korumak için hiçbir (kolay) yol yoktur.