2015-09-11 18 views
5

Bir kesme noktası koyduğum ve bir nesnenin özellikleriyle çalışmaya başladığım bir projede bir sorunum var ve null olmayan bir int için bir değer ayarlayamıyorum. Onu null olarak ayarlayabilirim, ama eğer herhangi bir şeye ayarlıyorum, hemen değeri kontrol ederse, 1 değerini döndürür.Hemen Pencerede ayarlanmadı ayarı yapılmıyor mu?

Bunu hemen pencerede görüyorsunuz, aynı zamanda üzerine geldiğinizde açılan denetim penceresi. hata ayıklama modunda duraklatıldığında bir nesne. Aynı zamanda bu, koşma kodunu etkilemez, sadece bozulduğunda ve değerlerle oynamayı denediğinizde görünür.

Ben yeni konsol projesinde bunu çoğaltmak başardı: Yeni konsol projeye ve bir kırılma noktası koymak

class Program 
    { 
    static void Main(string[] args) 
    { 
     var myValue = new TestItem() 
     { 
     NullableIntValue = null, 
     StringValue = "My test value" 
     }; 

     Console.WriteLine(string.Format("{0} is set to {1}", myValue.StringValue, myValue.NullableIntValue.HasValue ? myValue.NullableIntValue.Value.ToString() : "nothing")); 

     myValue.NullableIntValue = 0; 

     Console.WriteLine(string.Format("{0} is set to {1}", myValue.StringValue, myValue.NullableIntValue.Value)); 

     Console.ReadLine(); 

    } 
    } 

    public class TestItem 
    { 
    public int? NullableIntValue { get; set; } 
    public string StringValue { get; set; } 
    } 

Yapıştır "myValue.NullableIntValue = 0;" hat. O zaman koş.

kesme noktası isabet derhal pencere açın ve değerini ayarladığınızda:

myValue.NullableIntValue = null 
null 
?myValue.NullableIntValue 
null 

:

?myValue.NullableIntValue 
1 

başka bir şeyle Deneyin:

myValue.NullableIntValue = 123; 
123 

Sonra değerini kontrol Onu null dışındaki herhangi bir şeye ayarla ve her zaman 1 gibi görünüyor.

Ayrıca, "myValue" kesme noktası satırının üzerine gelebilir ve VS değerlerinin tüm değerleri gördüğünüz denetim penceresini açmasına izin verebilirsiniz. NullableIntValue gidin ve 100 (ya da bir şey) gidin ve Enter tuşuna basın ve hemen 1 olarak değiştirir.

Bu özellik, yalnızca bir özellik için böyle davranıyor gibi görünüyor, örneğin TestItem.NullableIntValue yerine bir değişkeni değiştirirseniz bir özellik iyi çalışıyor. Ve ben kod NullableIntValue için bir değer atamak ve koşmak izin verirseniz, hata ayıklama bir mola sırasında değil, sorun değil gibi görünüyor.

Ayrıca, VS 2013'te bunu denedim ve ödevi gayet iyi alıyor, bu yüzden VS 2015 ile sınırlı görünüyor ve hem C# 6 hem de C# 5 denedim, ikisi de oluyor.

Bu konuda ne gibi bir fikre sahip olabilirsiniz?

+0

Makinemde denedim ve sorununuzu yeniden oluşturamadım. Win 10, Visual Studio 2012, dün gece en son VS güncellemesini kurdu. VS2015'iniz tamamen yamalı mı? – Christoph

+0

'kısmi sınıf TestItem'? Bunun için başka bir kod var mı? – theB

+3

Bunu görüyorum, bu bir hata ayıklayıcı hatadır. Çok şaşırtıcı değil, geçmişte nullable ile ilgili bir sürü sorun yaşadı. Araçlar> Seçenekler> Hata ayıklama> Genel> Yönetilen uyumluluk modunu kullan geçici çözüm olarak kullanabilirsiniz, ancak bu çok iyi değildir. Hatayı connect.microsoft.com adresinden –

cevap

2

Bu Visual Studio 2015 RTM'de bilinen bir hatadır. Visual Studio Güncelleştirmesi 1'de giderdik. Temelde hata ayıklayıcısından hata ayıklama işlemine kadar karmaşık değer türlerini (nullables gibi) marshalling kırıldı. Güncelleştirme 1'i yüklemek istemiyorsanız, bunun için Debug -> Seçenekler -> Genel seçeneğine gidip "Eski C# ve VB İfade Değerlendiricilerini Kullan" seçeneğini işaretleyerek çalışabilirsiniz.

+0

Güncelleme @Patrick Nelson için teşekkürler - MSFT! – Mike

İlgili konular