为什么身份===运算符在c#中不可用?

时间:2012-08-23 18:10:57

标签: c# .net

我只是急于知道,为什么身份===运算符在c#中不可用。有什么理由不可用。 c#中的===运算符是什么? 因为我在一个地方看到身份运算符===比等于==运算符更快。 因为==运算符会暂时更改数据类型。

更新: =====运营商之间的差异。 ===基本上不会将两个变量转换为临时数据类型,而==等于临时转换转换变量的数据类型

2 个答案:

答案 0 :(得分:6)

因为ReferenceEquals存在。

因为值类型会覆盖相等。

因为C#与JavaScript不同,所以没有“truthy”和“falsy”值,隐含的转换也很明确。

简而言之,它不存在,因为与JavaScript不同,C#中不需要它。

答案 1 :(得分:2)

这是因为PHP / javascript是一种动态类型语言,而C-Sharp是静态类型的。

例如(在PHP中)

if (5 == '5') ... // is true
if (5 === '5') ... // is false

在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