C# 如何从对象中找到字符串的所有引用?

C# 如何从对象中找到字符串的所有引用?,c#,.net,string,object,reference,C#,.net,String,Object,Reference,可能重复: 字符串是引用类型。它们有两个部分;对象和对象的引用。比如, string str1 = "Soner"; string str2 = str1; str1和str2是对同一对象的引用,“Soner”是一个对象。有没有办法找到指向同一对象的所有引用?在本例中,我尝试使用“Soner”对象来查找str1和str2 当然,我也不知道如何在没有任何引用的情况下访问string对象。我想知道是否有办法。在CLR进程中,没有任何内置方法可以在运行时获取对对象的所有引用。不提供有关对象引用的任

可能重复:

字符串是引用类型。它们有两个部分;
对象
和对象的
引用
。比如,

string str1 = "Soner";
string str2 = str1;
str1
str2
是对同一对象的引用,
“Soner”
是一个对象。有没有办法找到指向同一对象的所有引用?在本例中,我尝试使用
“Soner”
对象来查找
str1
str2


当然,我也不知道如何在没有任何引用的情况下访问
string
对象。我想知道是否有办法。

在CLR进程中,没有任何内置方法可以在运行时获取对对象的所有引用。不提供有关对象引用的任何信息


您所能做的就是构建自定义的“跟踪器”,在明确添加对象后保留对对象的引用

在CLR进程中,没有任何内置方法可以在运行时获取对对象的所有引用。不提供有关对象引用的任何信息


您所能做的就是构建自定义的“跟踪器”,在明确添加对象后保留对对象的引用

你的意思是要查找在特定时间点运行时引用特定对象的所有变量吗?@Oded,我几乎要查找对同一对象的所有引用。正如你们所说,我只能在运行时使用,对吗?看看答案。他说你可以使用SOSAssist转换一个对象的所有引用。别忘了字符串是不可变的,当你改变它们时,它们就不再是旧对象了。@mahditahsildari当然,但在我的例子中,字符串没有变化。你的意思是要查找运行时在特定时间点引用特定对象的所有变量吗?@Oded几乎,我要查找对同一对象的所有引用。正如你们所说,我只能在运行时使用,对吗?看看答案。他说你可以使用SOSAssist转换一个对象的所有引用。别忘了字符串是不可变的,当你改变它们时,它们就不再是旧对象了。@mahditahsildari当然,但在我的例子中,没有字符串改变。但是,如果我尝试
s.GetHashCode()
r.GetHashCode()
RuntimeHelpers.GetHashCode(“Soner”)
。第一个和第二个给了我相同的结果,但第三个没有。如果您想自己使用hashcode跟踪对象,请使用
RuntimeHelpers.GetHashCode
,因为
GetHashCode
可以被类覆盖(
System.String
这样做),从而实现自定义。请参见示例,但是如果我尝试
s.GetHashCode()
r.GetHashCode()
运行时助手.GetHashCode(“Soner”)
。第一个和第二个给了我相同的结果,但第三个没有。如果您想自己使用hashcode跟踪对象,请使用
RuntimeHelpers.GetHashCode
,因为
GetHashCode
可以被类覆盖(
System.String
这样做),从而实现自定义。请参阅以获取示例