0

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

更新:===和运算符之间的区别==。=== 基本上不会将这两个变量转换为临时数据类型,而 == equal 将转换后的变量的数据类型临时转换

4

2 回答 2

6

因为ReferenceEquals存在。

因为值类型会覆盖相等性。

因为 C# 与 JavaScript 不同,它没有“真”和“假”值,并且隐式转换定义明确。

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

于 2012-08-23T18:12:34.823 回答
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
于 2012-08-23T18:27:10.913 回答