C#相当于Python的id()?

wes*_*wes 4 c# python mutability

是否有一个C#等同于Python的id()?如果没有,我如何测试对象是否已更改?例如,在Python中,一个不可变对象:

>>> s = "abc"
>>> id(s)
11172320
>>> s += "d"
>>> id(s)
18632928
Run Code Online (Sandbox Code Playgroud)

一个可变的:

>>> a = [1, 2, 3]
>>> id(a)
11259656
>>> a += [4]
>>> id(a)
11259656
Run Code Online (Sandbox Code Playgroud)

编辑 - 到目前为止,大多数答案都是关于比较函数/运算符,但我对正在比较的值更感兴趣.我最初并不清楚这一点,我接受Object.ReferenceEquals了答案.

Mar*_*tos 5

您可以使用测试对象标识Object.ReferenceEquals.


Don*_*nut 4

好吧,你可以使用这个Object.ReferenceEquals()函数:

判断指定的Object实例是否是同一个实例。

借用一下你的 Python 例子:

List<int> listA = new List<int> { 1, 2, 3 };
List<int> listB = listA;
listA.Add(4);

bool equal = object.ReferenceEquals(listA, listB);
Run Code Online (Sandbox Code Playgroud)

equaltrue