Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何重写==运算符

如何重写==运算符
EN

Stack Overflow用户
提问于 2013-12-17 09:11:59
回答 3查看 1.5K关注 0票数 5

如何为类的实例定义操作符==?我试过这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public bool operator == (Vector anotherVector)
{
    return this.CompareTo(anotherVector) == 1 ;              
}

但上面写着:

期望过载一元运算符

EN

回答 3

Stack Overflow用户

发布于 2013-12-17 09:14:42

您需要将该方法标记为static,还必须实现不相等的!=

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static bool operator ==(Vector currentVector,Vector anotherVector)
{
    return currentVector.CompareTo(anotherVector) == 1 ;              
}

您必须为两个对象实现==

对于!=

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static bool operator !=(Vector currentVector,Vector anotherVector)
{
    return !(currentVector.CompareTo(anotherVector) == 1) ;
}

请参阅:重载的指南等于()和操作符== (C#编程指南)

重载的操作符==实现不应引发异常。任何重载操作符==的类型也应该重载操作符!=。

票数 9
EN

Stack Overflow用户

发布于 2013-12-17 09:14:58

C++允许将操作符定义为实例成员函数,以便左操作数成为this指针,与之不同的是,C#操作符重载总是作为静态成员函数进行的。

不可能有this指针,而且两个操作数都是显式参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static bool operator==(Vector left, Vector right)
{
    return left.CompareTo(right) == 1;              
}

(虽然这在语义上似乎不正确,但通常CompareTo返回零作为等效)

票数 4
EN

Stack Overflow用户

发布于 2013-12-17 09:33:17

我完全同意哈比卜的回答-也同意.只是别忘了处理空子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static bool operator ==(Vector left, Vector right)
        {
            if ((object)left == null)
                return (object)left == null;

            if ((object)right == null)
                return false;

            return ...;
        }

太大了,不能作为他的评论发表。希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20640487

复制
相关文章
如何重写object虚方法
在 C# 中 Object 是所有类的基类,所有的结构和类都直接或间接的派生自它。前面这段话可以说所有的 C# 开发人员都知道,但是我相信其中有一部分程序员并不清楚甚至不知道我们常用的 ToString 、 Equals 和 GetHashCode 虚方法都来自于 Object 类,并且我们可以对它们进行重写。重写这三个虚方法可以说在项目开发中经常用到,只不过大部分开发人员并未留意这三个虚方法可以重写,而是自己写方法来实现。 下面我就来具体讲解一下它们三个应该怎么重写。在这里我需要说明的是本篇文章会大量涉及到设计规范和设计要求,代码只是作为辅助理解的形式出现,因此文章中的所有代码将会以代码段的形式出现。
喵叔
2020/09/08
8020
CA1815:重写值类型上的 Equals 和相等运算符
值类型未重写 System.Object.Equals 或未实现相等运算符 (==)。 此规则不检查枚举。
呆呆
2022/02/19
5790
JavaBean,为什么要重写hashCode()方法和equals()方法及如何重写
JavaBean为什么要重写hashCode()方法和equals方法,我记得当时我巴拉巴拉半天就是没有说到重点.
JAVA葵花宝典
2021/09/08
9800
【说站】java如何重写findClass方法
1、使用findClass(String)方法,可以重新加载class字节码文件,因为在ClassLoader中,ffindClass方法由protected修饰,只能调用被子类,没有实现方法,只抛出一个ClassNotFoundException的异常。
很酷的站长
2022/11/24
5310
【说站】java如何重写findClass方法
WPF --- 如何重写WPF原生控件样式?
上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生的 DataGrid 的样式,包含如下内容:
Niuery Diary
2023/10/22
5260
WPF --- 如何重写WPF原生控件样式?
如何使用calcite rule做SQL重写(上)
各位读者朋友,我想死你们了,今天我带着 calcite这个专题的第三篇文章来了,今天我们来说说sql重写,这可能也是大家都有需求的方面,我计划这个专题分为三篇来写:
麒思妙想
2023/08/28
1.7K0
如何使用calcite rule做SQL重写(上)
重写equals方法必须重写hashcode
比较的是引用,也就是对象的地址是否相等,equals在非空对象上需要满足以下特性:
用户4415180
2022/06/23
1.3K0
如何使用calcite rule做SQL重写(下)
上一篇文章我们介绍了如何使用默认规则做条件下推,今天我们来尝试自定义规则,来实现对SQL的重写。我们本期将会深入浅出的以修改查询表为例,进行Sql rewrite,这应该在我们湖仓一体的架构中,处于核心地位的需求。我们今天就深入浅出的来做一个案例 Select * from consumers 实际查询则为 Select * from consumers_1,这个需求在分库分表里应该也很常见。
麒思妙想
2023/09/12
1.2K1
如何使用calcite rule做SQL重写(下)
为什么重写equals必须重写hashCode
如果我们不重写equals和hashcode,那么它使用的是Object方法的实现。我们先简单看一下
一个程序员的成长
2021/12/08
1.7K0
Vector重写
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/vector/
对弈
2019/09/04
1.2K0
vector重写
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/vector%e9%87%8d%e5%86%99/
对弈
2019/09/04
1.2K0
为什么重写equals必须重写hashCode
如果我们不重写equals和hashcode,那么它使用的是Object方法的实现。我们先简单看一下
一个程序员的成长
2021/12/10
1K0
为什么重写equals必须重写hashCode
URL重写
(图片来自:https://github.com/Bikeman868/UrlRewrite.Net)
问问计算机
2021/05/08
5K0
URL重写
重写ThreadPoolTaskExecutor
参考代码:https://github.com/Noneplus/ConcurrentDemo
Noneplus
2020/08/11
1.4K0
【说站】python如何重写start_requests方法
1、在scrapy中,start_url是由start_requests处理的,通过重写这种方法,start_url可以携带请求头信息。
很酷的站长
2022/11/23
7040
【说站】python如何重写start_requests方法
为什么重写 equals 时必须重写 hashcode?
equals 默认是和==一样,判断引用是否相等的,一般需要覆写后才能实现真正的判等。
水货程序员
2018/11/13
2.4K0
如何在 ASP.NET Core 中重写 URL
所谓URL重写指的是更改当前执行的URL,将其指向另外的URL以继续处理当前请求或重定向到外部URL。在ASP.NET中我们可以使用HttpContext.RewritePath方法,但在.NET Core中它并不存在。下面我我们将学习重写和重定向之间的区别,和何时以及如何在ASP.NET Core 中使用它们。 实际开发中,常见的重写URL场景有如下四种:
喵叔
2021/12/05
3.2K0
为什么重写了equals()也要重写hashCode()
在Effective Java中第九条规定在覆盖equals()方法时总要覆盖hashCode()方法。这是为什么呢?接下来我们就介绍一下这两个方法。
公众号 IT老哥
2020/12/29
1K0
为什么重写了equals()也要重写hashCode()
重写equals就必须重写hashCode的原理分析
因为最近在整理Java集合的源码, 所以今天再来谈谈这个古老的话题,因为后面讲HashMap会用到这个知识点, 所以重新梳理下。 如果不被重写(原生Object)的hashCode和equals是什么样的?   不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。   不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)。 为什么需要重写equals和hashCode方法?       在我们的业务系统中判断对象时有时候需要的不是一种严
一枝花算不算浪漫
2018/05/18
1.1K0
Cesium 组件重写
homeButton 功能在实际的应用场景中很常见而且功能也很实用,该组件的主要功能是返回到系统初始化时的位置。默认是整个球的位置,如下图:
前端小tips
2021/11/23
1.3K0
Cesium 组件重写

相似问题

如何重写运算符<

10

如何重写运算符?

20

重写运算符+

20

如何为多态重写运算符

30

Ruby重写运算符

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文