Doğrulanmış, bu gerçekten hata ayıklayıcısında bir hatadır. Connect.microsoft.com'u aradım ve benzer bir şey bulamadım, bu pek çok VB.NET programcıya çarpan bir hata değil. Tamamen şaşırtıcı değil, bu sadece Nullable değişken adına .ToString() eklediğinizde yanılıyor. Kimse bunu yapmaz.
Bu sitede yardım alabileceğiniz bir tür hata değil, Microsoft'un düzeltmesi gereken bir hatadır.
Bu hatayı biraz karakterize etmek, hata ayıklayıcıda yerleşik olarak VB.NET'e özgü ifade çözümleyicide yanlış görünmektedir. Bunu bir C# projesinde tekrarlayamamanın nedeni. Ve sürecin bitkinliğinin neden önemli olmadığı, 64 bitlik hata ayıklayıcı da kötü değerleri gösterir. Bu genellikle Microsoft'un emekli olmak için üzerinde çalıştığı bir kod parçası. Temel sorun, VB.NET derleyicisinin eşdeğerini hata ayıklayıcısına yerleştirmeleri gerektiğidir, böylece bu ifadeler ayrıştırılabilir. Sınırlı olsa da, bu ayrıştırıcı neredeyse tüm dili desteklemiyor. Yan etki, hata ayıklayıcının çalıştırdığı kodun programınızın çalıştırdığı koddan farklı olabileceğidir.
Nullable (Of T) .ToString() için kod oluşturma oldukça zor, koşullu bir kutu dönüştürme gerektiriyor. Ayrıştırıcı böyle bir ifade için onu flulaştırır, MyNumber.GetHashCode()
'un nasıl yanlış değer ürettiğini de not edin. Ve MyNumber.Equals(5456.0)
. Boks dönüşümünü gerektiren ifadeler.
Teknik olarak bu hatayı connect.microsoft.com adresinden de bildirebilirsiniz, ancak zaman geçirmenizi tavsiye etmem. Belirtildiği gibi, Microsoft bu ayrıştırıcıyı emekli etmek için çalışıyor ve sonunda oldu. Roslyn, her yerde kullanılabilen bir derleme servisidir. VS2015'e entegre edildi ve hata ayıklayıcının da kullandığını bildiği kadarıyla. % 100 emin değil, VS2015 serbest bırakıldığında 9 gün içinde bileceğim.Belki beta/RC sürümü yüklü olan bir kişi bir yorum ile onaylayabilir.
GÜNCELLEME: VS2015'te doğrulandı.
Bu arada, güncelleştirilinceye kadar, geçici çözüm, hızlı/izle ifadelerinizdeki niçin değiştirilebilir değişkenlerde ToString() öğesini kullanmayı bırakmaktır. Bu bir araba.
Gerçekten de bir numara ile atanmışsa, 'MyNumber' değerini kontrol edin. Veya kodunuzun "MyNumber" değişkenine erişen başka bir parçası var, bunun global bir değişken olduğu için başka bir yerde değiştirilmiş olması mümkündür. – kaonashi
@brcm: Sorunun ne olduğunu anladınız mı? Sanırım bu, görsel stüdyoda –
'da bir hata gibidir. Evet, "6456" görüntüleniyor. Saat "1" gösterir. Görsel stüdyomda denedim ve aynı problemi almadım. Bu yüzden onun değişkeninin başka bir yerde değiştirilip değiştirilmediğini sordum. – kaonashi