我只是急于知道,为什么身份===运算符在c#中不可用。有什么理由不可用。 c#中的===运算符是什么? 因为我在一个地方看到身份运算符===比等于==运算符更快。 因为==运算符会暂时更改数据类型。
更新: ===
和==
运营商之间的差异。
===基本上不会将两个变量转换为临时数据类型,而==等于临时转换转换变量的数据类型
答案 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