struct Equality运算符立即窗口怪异行为

布拉卡

我正在对结构和运算符进行一些实验,遇到了一种我无法理解的情况。

我有一个仅包含的结构int我还使用了“隐式运算符”方法,因此我可以int直接为其分配一个值,并且已经实现了Equality运算符

一切似乎在运行时都工作正常,但是如果我创建了一个断点,并((TestStruct)1) == ((TestStruct)1);在“即时窗口”中执行此操作,它将返回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一起出现此问题

示范

布拉卡

汉斯·帕桑特(Hans Passant)发现这似乎是Visual Studio 2015错误

谢谢 ;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不能将运算符'=='应用于结构和default(struct)?

来自分类Dev

C Struct&Strcpy,点运算符可将其解析为指针

来自分类Dev

getline()的怪异行为

来自分类Dev

c ++ struct运算符:要求从转换为非标量类型

来自分类Dev

用const运算符警告(在struct中)

来自分类Dev

无法将运算符/应用于操作数struct和double

来自分类Dev

GDB的怪异行为

来自分类Dev

二进制运算符'=='不能应用于两个struct操作数

来自分类Dev

AudioServicesPlaySystemSound怪异行为

来自分类Dev

Java-三元运算符怪异行为

来自分类Dev

具有接口的通用协方差-“ is”和“ =”运算符之间的怪异行为矛盾

来自分类Dev

JavaScript赋值运算符怪异行为

来自分类Dev

map()的怪异行为

来自分类Dev

.htaccess的怪异行为

来自分类Dev

.NET中的char struct-运算符在哪里定义?

来自分类Dev

struct int数据类型不适用于关系运算符

来自分类Dev

在C#中未调用隐式运算符作为struct的默认值

来自分类Dev

pyperclip的怪异行为

来自分类Dev

C ++旧的struct运算符重载语法更改了吗?

来自分类Dev

struct / class包装中的C ++重载自动运算符

来自分类Dev

从C ++到C#的struct中的数组和运算符重载?

来自分类Dev

预期的 ';' 在声明的末尾-重新替换struct成员点运算符

来自分类Dev

用const运算符警告(在struct中)

来自分类Dev

QMultiMap,以struct作为键,struct作为值,比较运算符

来自分类Dev

struct Equality运算符立即窗口怪异行为

来自分类Dev

JavaScript赋值运算符怪异行为

来自分类Dev

struct中的运算符“:”在C中意味着什么?

来自分类Dev

Metal Shading Language - struct 不提供下标运算符

来自分类Dev

会员运算符:如何在“my_struct->my_var”中使用“my_var”实际值?

Related 相关文章

  1. 1

    为什么不能将运算符'=='应用于结构和default(struct)?

  2. 2

    C Struct&Strcpy,点运算符可将其解析为指针

  3. 3

    getline()的怪异行为

  4. 4

    c ++ struct运算符:要求从转换为非标量类型

  5. 5

    用const运算符警告(在struct中)

  6. 6

    无法将运算符/应用于操作数struct和double

  7. 7

    GDB的怪异行为

  8. 8

    二进制运算符'=='不能应用于两个struct操作数

  9. 9

    AudioServicesPlaySystemSound怪异行为

  10. 10

    Java-三元运算符怪异行为

  11. 11

    具有接口的通用协方差-“ is”和“ =”运算符之间的怪异行为矛盾

  12. 12

    JavaScript赋值运算符怪异行为

  13. 13

    map()的怪异行为

  14. 14

    .htaccess的怪异行为

  15. 15

    .NET中的char struct-运算符在哪里定义?

  16. 16

    struct int数据类型不适用于关系运算符

  17. 17

    在C#中未调用隐式运算符作为struct的默认值

  18. 18

    pyperclip的怪异行为

  19. 19

    C ++旧的struct运算符重载语法更改了吗?

  20. 20

    struct / class包装中的C ++重载自动运算符

  21. 21

    从C ++到C#的struct中的数组和运算符重载?

  22. 22

    预期的 ';' 在声明的末尾-重新替换struct成员点运算符

  23. 23

    用const运算符警告(在struct中)

  24. 24

    QMultiMap,以struct作为键,struct作为值,比较运算符

  25. 25

    struct Equality运算符立即窗口怪异行为

  26. 26

    JavaScript赋值运算符怪异行为

  27. 27

    struct中的运算符“:”在C中意味着什么?

  28. 28

    Metal Shading Language - struct 不提供下标运算符

  29. 29

    会员运算符:如何在“my_struct->my_var”中使用“my_var”实际值?

热门标签

归档