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 条评论
登录 后参与评论

相关文章

如何在C#中创建自定义属性

如何在C#中重载方括号运算符?

如何在C#中重载[]运算符

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

如何在Swift中创建自定义关系运算符

带有自定义类的C ++ STL映射的运算符重载

如何减少C ++中自定义类的+运算符内存消耗?

如何在结构内部重载运算符<<

与C ++中存在的C#中的提取/插入运算符重载类似的替代方法

C ++自定义控制台类-如何处理尚未重载“ <<”运算符的对象?

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

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

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

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

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

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

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

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

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

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

运算符重载python自定义类

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

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

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

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

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

如何在 DJL(深度 Java 库)中调用自定义 mxnet 运算符?

如何在 Swift 中使用 + 运算符创建自定义函数

如何在lua中制作自定义++、-=、+=运算符?