2015-11-28 4 views
1

Я делаю некоторые эксперименты с структурами и операторами, и я столкнулся с ситуацией, которую я не могу понять.struct Equality operator Immediate Window странное поведение

У меня есть структура, которая содержит только int. Я также воспользовался методами «неявного оператора», поэтому я могу напрямую назначить ему int, и я применил операторы Equality

Все работает нормально во время выполнения, но если я создаю точку останова и выполняю это ((TestStruct)1) == ((TestStruct)1); в окне Immediate Window возвращает false, но во время выполнения он возвращает true (как я и ожидал).

Если я положил другую точку останова, то в операторе Equality я вижу, что код там выполняется, но значения для моих структур не являются «1», как я ожидал, но некоторые случайные.

Вот мой пример кода:

class Program 
{ 
    static void Main(string[] args) 
    { 
     bool areEqual = ((TestStruct)1) == ((TestStruct)1); 
     string breakPoint = ";)"; 
    } 
} 

struct TestStruct 
{ 
    private Int32 value; 
    public TestStruct(Int32 value) 
    { 
     this.value = value; 
    } 

    static public implicit operator TestStruct(Int32 value) 
    { 
     return new TestStruct(value); 
    } 

    public static bool operator ==(TestStruct ptr1, TestStruct ptr2) 
    { 
     return ptr1.value == ptr2.value; 
    } 
    public static bool operator !=(TestStruct ptr1, TestStruct ptr2) 
    { 
     return ptr1.value != ptr2.value; 
    } 
} 

Редактировать Это, кажется, работает хорошо, если используется с VS 2013, этот вопрос, кажется, происходит только с VS 2015

Demonstration

+0

Я скопирую ваш пример и не могу воспроизвести. –

+0

Я сделал этот пример с VS 2015, и с VS 2015 он не работает для меня .. Я тестировал сейчас на VS 2013 и работает как ожидалось. – BraCa

+1

Я использую VS2015, и он работает. –

ответ

0

Это кажется, является ошибкой Visual Studio 2015, поскольку Ханс Пассант узнал

Спасибо;)

+0

Исправлено в VS2015 Обновление 1, выпущено почти в то же время, когда вы отправили этот ответ :) –

 Смежные вопросы

  • Нет связанных вопросов^_^