C#如何在自定义结构中创建许多类似的运算符重载

爱德斯
    public struct DecimalOrNaN
    {
        public decimal Value;
        public bool isNaN;
        public DecimalOrNaN (double D)
        {
            if (Double.IsNaN(D))
            {
                Value = default(decimal);
                isNaN = true;
            }
            else
            {
                Value = (decimal)D;
                isNaN = false;
            }             
        }
        public DecimalOrNaN(decimal D)
        {
            Value = D;
            isNaN = false;
        }
        public implicit operator DecimalOrNaN(double D)
        {
            return new DecimalOrNaN(D);
        }
        public implicit operator DecimalOrNaN(decimal D)
        {
            return new DecimalOrNaN(D);
        }
        public DecimalOrNaN operator *(int I, DecimalOrNaN D) 
        {
            return new DecimalOrNaN(D.Value * I);
        }         
    }

我在这里有一个存储小数的结构(让我们称它为DON),但是可以选择其中包含“非数字”,而普通十进制则没有。我可以自己添加所需的隐式转换,但是我还需要它能够与其他DON以及整数,双精度数和小数进行加,减和乘运算。我是否必须自己创建带有每个参数变量(int + DON,DON + int,int * DON,DON * int等)的每个运算符,还是有更好的方法呢?

艾伦

我的建议是使用可为空的类型:十进制?这将允许您将NULL分配给变量以指示它不是数字。

有关该语言功能的文档,请参见:http : //msdn.microsoft.com/zh-cn/library/1t3y8s4s.aspx

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#如何在自定义结构中创建许多类似的运算符重载

来自分类Dev

C ++自定义结构化数组下标运算符如何重载?

来自分类Dev

在Python中重载自定义类型的运算符

来自分类Dev

C#自定义一元运算符重载

来自分类Dev

返回自定义类C#运算符/(int,int)的重载除法的位置

来自分类Dev

重载-> C ++中的运算符可返回自定义对象

来自分类Dev

C ++中的自定义运算符重载而无开销

来自分类Dev

如何在结构中重载'=='运算符?

来自分类Dev

如何使用自定义比较器功能而不是运算符重载来设置结构集

来自分类Dev

使用比较运算符在 Outlook C# 中创建自定义字段过滤器

来自分类Dev

如何在C#中使用重载算术运算符创建接口?

来自分类Dev

如何在C#中使用重载算术运算符创建接口?

来自分类Dev

如何在继承的类上使用运算符重载以匹配C#中的基本运算符

来自分类Dev

如何在不重载比较运算符的情况下专门针对std :: max的自定义类型?

来自分类Dev

运算符重载python自定义类

来自分类Dev

运算符重载python自定义类

来自分类Dev

如何在C ++中重载赋值运算符

来自分类Dev

如何在C ++中重载索引运算符?

来自分类Dev

如何在C ++中重载赋值运算符

来自分类Dev

如何在 C++ 中重载 ofstream 运算符?

来自分类Dev

如何在C#中重载一元运算符=。它给错误

来自分类Dev

如何在C#中重载一元运算符=。它给了错误

来自分类Dev

std :: map中的自定义键,重载<运算符

来自分类Dev

自定义向量类中的重载求和运算符

来自分类Dev

为MATLAB中的自定义类重载索引运算符`()`和`{}`

来自分类Dev

自定义迭代器类中重载的`!=`运算符无法正常工作

来自分类Dev

自定义类中的重载运算符<<(Singleton)

来自分类Dev

未为类型定义VB .net bc30452运算符=-如何创建自定义运算符

来自分类Dev

如何在C#中创建自定义事件

Related 相关文章

  1. 1

    C#如何在自定义结构中创建许多类似的运算符重载

  2. 2

    C ++自定义结构化数组下标运算符如何重载?

  3. 3

    在Python中重载自定义类型的运算符

  4. 4

    C#自定义一元运算符重载

  5. 5

    返回自定义类C#运算符/(int,int)的重载除法的位置

  6. 6

    重载-> C ++中的运算符可返回自定义对象

  7. 7

    C ++中的自定义运算符重载而无开销

  8. 8

    如何在结构中重载'=='运算符?

  9. 9

    如何使用自定义比较器功能而不是运算符重载来设置结构集

  10. 10

    使用比较运算符在 Outlook C# 中创建自定义字段过滤器

  11. 11

    如何在C#中使用重载算术运算符创建接口?

  12. 12

    如何在C#中使用重载算术运算符创建接口?

  13. 13

    如何在继承的类上使用运算符重载以匹配C#中的基本运算符

  14. 14

    如何在不重载比较运算符的情况下专门针对std :: max的自定义类型?

  15. 15

    运算符重载python自定义类

  16. 16

    运算符重载python自定义类

  17. 17

    如何在C ++中重载赋值运算符

  18. 18

    如何在C ++中重载索引运算符?

  19. 19

    如何在C ++中重载赋值运算符

  20. 20

    如何在 C++ 中重载 ofstream 运算符?

  21. 21

    如何在C#中重载一元运算符=。它给错误

  22. 22

    如何在C#中重载一元运算符=。它给了错误

  23. 23

    std :: map中的自定义键,重载<运算符

  24. 24

    自定义向量类中的重载求和运算符

  25. 25

    为MATLAB中的自定义类重载索引运算符`()`和`{}`

  26. 26

    自定义迭代器类中重载的`!=`运算符无法正常工作

  27. 27

    自定义类中的重载运算符<<(Singleton)

  28. 28

    未为类型定义VB .net bc30452运算符=-如何创建自定义运算符

  29. 29

    如何在C#中创建自定义事件

热门标签

归档