C# .NET是否等于()只是==?
可能重复:C# .NET是否等于()只是==?,c#,reference,operators,equals,C#,Reference,Operators,Equals,可能重复: 嗨, 就一般用途而言,is==与Equals()相同吗?我的意思是,如果对象相同(参考),两者都返回true?第一个问题,不,不是 第二个问题,是的。如果 比较的是引用类型,它们都属于同一类型 如果它们指向相同的引用 ==运算符未重载 Equals方法不会被重写 如果是,则可以将==视为与Equals相同。否,它们有不同的用途 它们都可以通过继承类来定制,这意味着理论上A==B可以返回与A.Equals(B)不同的值,但主要区别在于==在编译时解析,而Equals在运行时解析
嗨,
就一般用途而言,is==与Equals()相同吗?我的意思是,如果对象相同(参考),两者都返回true?第一个问题,不,不是 第二个问题,是的。如果
- 比较的是引用类型,它们都属于同一类型
- 如果它们指向相同的引用
- ==运算符未重载
- Equals方法不会被重写
如果是,则可以将==视为与Equals相同。否,它们有不同的用途
它们都可以通过继承类来定制,这意味着理论上
A==B
可以返回与A.Equals(B)
不同的值,但主要区别在于==在编译时解析,而Equals在运行时解析Equals
和=
用于不同的目的:
顺便说一句,没有“一般”用途;计算机是二进制的,不管怎样!我投票赞成重新开放,因为重复提到的问题并没有提到
=
和等于
之间的概念差异。相反,它处理操作数求值顺序的一种特殊情况,这是一个不同的主题。@Heinzi:你说得对。这可能是它的复制品。@Cody:说得好。有可能收回重新开放的投票吗?@Heinzi:没有,不幸的是没有。我自己也犯过很多这样的错误。但是,如果没有其他人同意,它们会在几天后消失。(巧合的是,最初提出的副本最初是我发现的问题的副本。)你说的编译时间是什么意思?最后一个项目符号应该是“重写”