Я делаю некоторые эксперименты с структурами и операторами, и я столкнулся с ситуацией, которую я не могу понять.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
Я скопирую ваш пример и не могу воспроизвести. –
Я сделал этот пример с VS 2015, и с VS 2015 он не работает для меня .. Я тестировал сейчас на VS 2013 и работает как ожидалось. – BraCa
Я использую VS2015, и он работает. –