gpt4 book ai didi

c# - 引用类型——我们能看到实际的引用吗?

转载 作者:太空狗 更新时间:2023-10-29 19:57:23 26 4
gpt4 key购买 nike

引用类型和值类型之间的区别常常让初学者感到困惑,因为他们不了解值类型的变量实际上包含什么。我们知道:

  • 值类型存储实际
  • 引用类型只存储对象的引用

是否可以检查每种变量以查看值或实际引用本身?引用是否存储为某种编码值?我知道引用可以按值传递,所以我假设是这样。

我认为这将有助于新手的理解,并且探索起来非常有趣。

最佳答案

Is it possible to inspect each kind of variable to either see the value, or the actual reference itself?

澄清一下,引用类型的变量引用。引用即值。

引用是一种值,就像 int 是一种值一样。与 int 不同,引用是一个只能被复制取消引用 的值;你不能在 C# 中直接观察它的值,因为它的值是垃圾收集器的一个实现细节。

Is the reference stored as some kind of coded value?

是的,没错。实际上,引用是一个 32 位或 64 位整数(取决于您是在 32 位还是 64 位进程中),它是指向垃圾收集器已知的与所引用对象的数据相关联的某些结构的指针.

如果您想直接查看引用资料,那么调试器就是这样做的工具。将 C# 代码加载到调试器中,对其进行编译、运行、命中断点,然后查看堆栈和寄存器的状态。稍微聪明一点,您应该能够找出哪些堆栈位置和寄存器对应于哪些局部变量。值类型的局部变量对应的位置将包含值;那些引用类型将包含看起来像指针的值。如果您在内存窗口中检查这些指针,您将看到由垃圾收集器维护的描述对象内容的结构。

关于c# - 引用类型——我们能看到实际的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com