如何在C#中显示引用的实际值

时间:2009-12-30 03:18:04

标签: c#

我正在学习更多关于C#的知识,并且想知道如何显示引用的实际值或结构的地址。我正在寻找类似于以下C代码的东西:

    int i; 
    printf("int i resides at memory location %x",&i);

3 个答案:

答案 0 :(得分:8)

unsafe上下文中,这将在C#中起作用:

int i = 10;
int *ptr = &i;
Console.WriteLine((int)ptr);

我不知道它是否可以在安全的环境中完成,或者,如果是,如何(我怀疑它不能)。

答案 1 :(得分:6)

这在C#中无法完成,我知道。 .NET可以随心所欲地移动存储块,因此变量的地址最多只能保留临时含义。

答案 2 :(得分:0)

虽然可以在某些情况下执行此操作,但结果却毫无意义。正如已经指出的那样,References are not addresses - 或者至少,他们没有拥有。因此,即使它正在运行,您所尝试的内容并非在所有实现中得到保证,并且通常不是特别有用。如果您没有固定,则该值不可靠,如果您执行固定,则更改您报告的内容...

真的,你应该在 + 之外使用不同的工具这个...例如windbg + SOS。