小编Joh*_*ous的帖子

是否可以重新分配本地的参考?

C#的ref本地是使用称为托管指针的CLR功能实现的,它具有自己的一组限制,但幸运的是,不可变的不是其中之一.即如果你有一个托管指针类型的局部变量,那么在ILAsm中,完全有可能改变这个指针,使其成为"引用"另一个位置.(C++/CLI还将此功能公开为内部指针.)

在ref本地读取C#文档时,我觉得C#的ref本地是,即使基于CLR的托管指针,也不可重定位; 如果它们被初始化为指向某个变量,则不能使它们指向别的东西.我试过用了

ref object reference = ref some_var;
ref reference = ref other_var;
Run Code Online (Sandbox Code Playgroud)

和类似的结构,无济于事.

我甚至试图在IL中编写一个包含托管指针的小结构,就C#而言它是有效的,但是CLR似乎不喜欢在结构中有一个托管指针,即使在我的使用中它没有永远不会去堆.

是否真的不得不诉诸于使用IL或者递归来解决这个问题?(我正在实现一个数据结构,需要跟踪它的哪些指针被跟踪,完美使用托管指针.)

.net c# pointers

9
推荐指数
1
解决办法
776
查看次数

标签 统计

.net ×1

c# ×1

pointers ×1