У меня возникла проблема в проекте, где я поставил точку останова и начал работать со свойствами объекта, и я не могу установить значение в значение NULL int. Я могу установить его на нуль, но если я его установлю на что-нибудь, то сразу же проверю значение, оно возвращает 1.Настройка свойств в окне Immediate Window не установлена?
Я вижу это в непосредственном окне, а также окно инспекции, которое появляется, когда вы наводите объект при приостановке в режиме отладки. Также кажется, что это не влияет на текущий код, просто когда вы ломаетесь и пытаетесь играть со значениями.
Я был в состоянии воспроизвести его в новом проекте консоли:
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; }
}
Paste, что в новый проект консоли, и поставить точку останова на «myValue.NullableIntValue = 0;» линия. Затем запустите его.
Когда точки останова, открыть окно и установить значение:
myValue.NullableIntValue = 123;
123
Затем проверьте значение:
?myValue.NullableIntValue
1
Попробуйте его с чем-то другим:
myValue.NullableIntValue = null
null
?myValue.NullableIntValue
null
Установите его на что угодно, кроме нуля, и оно всегда будет 1.
Вы также можете навести курсор на линию точки останова «myValue» и позволить VS вскрыть окно проверки, в котором вы видите все значения. Перейдите в NullableIntValue и установите значение 100 (или что-нибудь) и нажмите Enter, и он немедленно изменит его на 1.
Это похоже на поведение этого свойства, т. Е. Если я изменю TestItem.NullableIntValue на переменную вместо свойство работает нормально. И если я присвою значение NullableIntValue в коде и пусть он запустится, похоже, это не проблема, просто не во время перерыва в отладке.
Обратите внимание, что в VS 2013 также было выполнено это задание, и он выполняет задание просто отлично, поэтому он кажется ограниченным VS 2015, и я пробовал как C# 6, так и C# 5, происходит на обоих.
Любые идеи, что может быть причиной этого?
Я попробовал это на своей машине и не смог воспроизвести вашу проблему. Win 10, Visual Studio 2012, установили последнее обновление VS вчера вечером. Ваш VS2015 полностью исправлен? – Christoph
'partial class TestItem'? Есть ли дополнительный код для него где-то еще? – theB
Я вижу это, это ошибка отладчика. Не удивительно, что в прошлом у него было много проблем с нулевым значением. Вы можете использовать Инструменты> Параметры> Отладка> Общие> Использовать режим совместимой совместимости в качестве обходного пути, но это не очень хорошо. Вы можете сообщить об ошибке на веб-сайте connect.microsoft.com –