我如何重写基类的 == 运算符,以便调用重写

2024-01-10

使用如下代码

public class Task
{
  string Name;
  public static bool operator ==(Task t1, Task t2)
  { return t1.Name = t2.Name && t1.GetType() == t2.GetType(); }
}
public class TaskA : Task
{
   int aThing;
   public static bool operator ==(TaskA t1, TaskA t2)
   { 
      return (Task)t1 == (Task)t2 && t1.GetType() == t2.GetType()
          && t1.aThing == t2.aThing; }
}
public class TaskB : Task  //more of the same

class Stuffin
{
   List<Task> Tasks;

   void CheckIt()
   {
      bool theSame = Tasks[0] == Tasks[1];
   }

我试图确保派生运算符 (TaskA.==) 被调用。

尝试该技术时出现编译错误here https://stackoverflow.com/questions/2143394/operator-in-derived-class-never-gets-called.

我认为如果操作符不是静态的,我就能让它正常工作,因为我可以重写基类的操作符。那可能吗?

一旦我明白了,我将如何比较基本属性(我认为转换为任务类型 [(Task)t1 == (Task)t2] 不起作用)?


你不能。运营商不是被覆盖, 他们是超载。这意味着要使用的实现完全在编译时决定。

一件事你cando 是覆盖Equals in Task并从调用它==,然后覆盖它again in TaskA。这也使得“基本属性”检查变得容易 - 只需调用base.Equals from TaskA.Equals.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何重写基类的 == 运算符,以便调用重写 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 使用 C# 读取 Soap 消息

  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • NUnit.Mocks 文档在哪里? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 NUnit 的模拟库 NUnit Mocks 的文档在哪里 我在他们中找不到任何东西官方文档 http
  • 一次读取 1 个字节的二进制文件

    我试图一次读取一个 C 语言的二进制文件 在互联网上搜索了几个小时后 我仍然无法让它检索除垃圾和 或段错误之外的任何内容 基本上 二进制文件采用列表格式 长度为 256 个项目 每个项目为 1 个字节 0 到 255 之间的无符号整数 我正
  • 修改int为float(mysql)

    我正在尝试将 MySQL 中的数据类型从 INT 更改为 FLOAT 如下所示 ALTER TABLE user MODIFY rate float 5 NOT NULL 但当前数据已被删除 有什么方法可以使用 SQL 将数据从 INT 转
  • 如何从指令调用控制器函数?

    如何从指令调用控制器函数 或者如何从控制器访问指令 ng model 例如 我使用 Angular ui 引导时间组件 当时间改变时 我需要通知控制器中的调用函数 我认为总的来说 这是组件之间双向通信的典型用例 appControllers
  • 持久化 MPMediaItemCollection 对象的方法? (选自 iPod)

    我正在制作一个应用程序 用户可以在其中选择设置选项卡中的歌曲 并根据需要在不同的视图中播放该歌曲 我希望这样 如果用户要关闭应用程序并再次重新打开它 则可以存储该项目 我设法允许用户选择并存储一首歌曲 IBAction showMediaP
  • 使用代码隐藏文件中的 VB.Net 编码填充 ASP.Net DropDownList

    我们在 ASP Net VB Net Web 表单的标记中有一个 DropDownList 我们希望使用数据集设计器创建的数据集中的数据填充 DropDownList 但我们在代码隐藏文件中使用的编码无法使用 FindControl 找到
  • VS2015 VSIX 系统内存不足异常

    我创建了一个新的 VSIX 项目并添加了一个新项目 gt 可扩展性 gt 自定义工具窗口 然后我尝试构建 但出现错误 1 gt Build started Project JSBQ Configuration Debug Any CPU 1
  • Ember数据删除失败,如何回滚

    如果我调用 destroyRecord 并且它在服务器上失败 它也会从本地存储和 UI 中消失 如果删除失败 我需要以某种方式 回滚 我尝试过这样的事情 item destroyRecord then function Notify suc
  • 从命令行构建解决方案

    我正在尝试使用命令行从 cmd 文件构建许多解决方案来处理整个构建 这是构建解决方案的行 for f i in CFG bld lst do set OUT i Release REBUILD call out C Program File
  • Web 应用程序中用于 Retina 显示的启动图像?

    有人知道如何让iOS在使用时显示更高分辨率的启动图像吗 目前 我只能使用 460x380 的图像 在 iPhone 4 的高 dpi 显示屏上显示时 该图像显然看起来很糟糕 我尝试了 2x 技巧 但似乎不起作用 有什么想法或解决方法吗 我从
  • jquery 中的 Twig 无法读取 jquery 变量

    我正在尝试使用 jQuery post 但在使用 twig 语法的路径部分有问题 这是代码 messageSender click function e e preventDefault var threadId this find a d
  • cefSharp ChromiumWebBrowser 大小与页面内容的关系

    您知道如何使 ChromiumBrowser 打开时浏览器大小适合内容吗 现在这个 xaml 位于窗口主体中 当有人单击 MyTextBox 的文本时 ChromiumBrowser 将打开以显示更多信息 Edit 如果没有固定的宽度和高度
  • 在 Jtable 中添加 JCombobox 并在 Swing java 中获取该行和列

    我有一个 Jtable 其中我像这样添加了 JComobox TableColumn sportColumn jTable1 getColumnModel getColumn 2 comboBox new JComboBox comboBo
  • 仅元素属性发生变化的 ItemsSource 和集合

    我对 ComboBox 没有反映其 ItemsSource 绑定到的集合的属性变化感到悲伤 有一个树由包含设置对象的类别对象的可观察类别集合组成 某些设置定义其他设置允许的值域的表示名称 它们分布在多个类别中 但使用 LINQ 的一点魔法会
  • 打印哈希码代替数组元素[重复]

    这个问题在这里已经有答案了 我创建了一个程序 其中有一个名为 Student 的新类 它设置和获取不同的变量 例如姓名 GPA 是否注册以及何时注册 这是一个字符串 它的目的是 问题是 当我尝试将信息存储到数组和 或数组列表中并打印它时 我
  • RSVP - 用承诺处理超时

    我正在使用 ember js 和 RSVP 据我所知 没有任何东西可以处理异步调用的超时 我的想法是使用装饰器模式包装解析处理程序 将解析处理程序包装在某些代码中 这些代码将计时调用并在发生超时时调用拒绝 这听起来是个好主意吗 还是有一些内
  • Android:意图的 setFlags 和 addFlags 之间有什么区别

    setFlags 和 addFlags 对于意图有什么区别 请任何人解释一下 帮助表示赞赏 当你使用setFlags您正在替换旧标志 当您使用addFlags您正在附加新标志 请记住 标志只是一个整数 它是 2 的幂 在二进制中 标志如下所
  • 当委托传递到另一个 AppDomain 时,是否可以将它们编组为代理?

    不知何故 我假设传递给另一个 AppDomain 的委托将变成代理 就好像它是派生自的对象一样MarshalByRefObject 不幸的是 他们似乎没有 假设我的代码中有一个类MyClass像这样 Serializable public
  • Git 子模块与包管理器的私有源

    使用本地包管理器 例如 pip 或 npm 比使用 git 子模块有什么优势 git is a 发展工具 您在开发期间使用它 但在部署期间不使用它 pip是一个部署工具 在开发过程中 您使用它来安装必要的库 在部署期间 您的用户使用它来安装
  • 我如何重写基类的 == 运算符,以便调用重写

    使用如下代码 public class Task string Name public static bool operator Task t1 Task t2 return t1 Name t2 Name t1 GetType t2 Ge