为什么identity==运算符不是';t在c#中可用?
我只是想知道,为什么identity===操作符在c#中不可用?有什么原因不可用吗什么是c#中===运算符的等式? 因为我在一个地方看到,identity操作符===比equal操作符快。 因为==运算符暂时更改数据类型 更新:与为什么identity==运算符不是';t在c#中可用?,c#,.net,C#,.net,我只是想知道,为什么identity===操作符在c#中不可用?有什么原因不可用吗什么是c#中===运算符的等式? 因为我在一个地方看到,identity操作符===比equal操作符快。 因为==运算符暂时更改数据类型 更新:与=运算符之间的差异。 ===基本上不会将两个变量转换为临时数据类型,而==equal暂时转换转换变量的数据类型,因为存在 因为值类型覆盖相等 因为C#,与JavaScript不同,它没有“truthy”和“falsy”值,并且隐式转换定义良好 简言之,它不存在是因为与J
=
运算符之间的差异。
===基本上不会将两个变量转换为临时数据类型,而==equal暂时转换转换变量的数据类型,因为存在
因为值类型覆盖相等
因为C#,与JavaScript不同,它没有“truthy”和“falsy”值,并且隐式转换定义良好
简言之,它不存在是因为与JavaScript不同,C#中不需要它。这是因为PHP/JavaScript是动态类型语言,而C-Sharp是静态类型语言 例如(在PHP中) 在C# 编辑 更详细地说,许多类型没有隐式转换(即字符串与整数),这会导致编译错误,但对于存在隐式转换(整数与浮点)的情况,可以进行类似类型的比较
float x = 1.0f;
int y = 1;
if (x == y) ... // is true
if (x == y && x.GetType() == y.GetType()) ... // is false
它不存在,因为要么没有人请求它,要么它不够重要,没有足够的时间来实现(或者两者兼而有之)。你希望那个操作符做什么?我不明白为什么这个问题需要被否决……你不需要===因为c#是严格键入的。也就是说,如果不先将两种数据类型的变量转换为普通类型,就不会比较它们。我仍然很困惑,为什么这个问题被否决了。请提供任何理由,解释为什么需要C#格式。我想知道,一个拥有182k的人回答了我,但人们仍然对我失望voting@DotNetDreamer-请解释这两者之间有什么关系?@Oded
ReferenceEquals
与@DotNetDreamer并不等同,因为这是对一个糟糕问题的好答案。@Matthew-当然不是。我并不暗示它会。我还给出了C中不存在=
的其他原因。“弱类型”!=“动态类型”<在弱类型语言中,不同类型之间的代码>=实际上可能导致各种破坏。例如,在C中,您可能正在将指针与数字进行比较。@您是对的,正在更新。。。
if (5 == '5') ... // compile error, incompatible types
float x = 1.0f;
int y = 1;
if (x == y) ... // is true
if (x == y && x.GetType() == y.GetType()) ... // is false