infinat 2021-04-24 21:11 采纳率: 0%
浏览 58

C# 赋值操作符的重载解决办法

一、需求:

为了实现一个动态指标监控系统,需设计一个Number类,Number 类具备可监控值变化的能力。

Number类包含一个真值TrueValue,一个Changed事件,以及相应的方法。

Number类的实例n既可以直接定义为一个数值,又可以等于n1+n2,或者等于n1*n2,或者等于n3,或者等于n1+n2*n3等计算结果 

期望达到n在定义后,任何赋值、或者参数的变化都能够触动n的changed事件

即能够监控n的所有直接的变化,也能监控间接的变化。

为了实现计算,我已经对Number重写+,-,*,/等于运算操作符

二、发生的问题:

假设按此顺序执行:

Number n = new Number(1);

n.Changed += n_Changed;

n = n1+n2; 

那么此时n会丢失已经注册的Changed事件,因为=无法重写,n1+n2 计算出来的新的Number nx 已经将 n覆盖掉。

但C#赋值操作符无法重载,无法将n已经注册的changed事件赋值给nx。

三、请问,如优雅的实现赋值操作符 = 的重载?

以实现可以将n 已经注册的changed事件赋值给nx,实现n = 一个新值时, 能够触动n已经注册的Changed事件?

比如:=运算符是否有相应的函数可以重写?

当然我可以先取出n的Changed 事件,再赋值给nx,但这不优雅。

  • 写回答

2条回答 默认 最新

  • compasslg 2021-04-24 21:50
    关注

    非得用 = 吗,写一个set方法不香吗。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题