som*_*ing 1 c# pointers ref out
我正在学习C和C#,这个问题适用于C#.你为什么要在指针上使用out和ref关键字?使用指针,您可以直接访问变量.我在msdn上找到了这个代码:here.
这是代码:
static int value = 20;
public unsafe static void F(out int* pi1, ref int* pi2)
{
int i = 10;
pi1 = &i;
fixed (int* pj = &value)
{
// ...
pi2 = pj;
}
}
Run Code Online (Sandbox Code Playgroud)
你为什么要在指针上使用out和ref关键字?
好吧,为什么你会使用out和ref关键字,句号?当您希望调用修改现有变量的方法时,可以使用out关键字.当您希望调用读取和修改现有变量的方法时,可以使用ref关键字.变量是指针类型似乎不是特别相关.
如果你的问题实际上是"你能给我一个现实代码的例子,你可能希望通过ref传递指针类型的变量吗?" 那么我必须承认,在编写C#代码的十年里,我从未在生产代码中使用过指针而且很少使用ref,所以我没有个人经验的例子.我可以想象这样的事情.例如,想象一下传统的C风格双向链表.您可能希望同时读取和变异列表的头部和尾部指针,并通过将ref Link*s 传递到头部和尾部来实现.
现在您已经包含了指向您找到此代码的位置的链接,我注意到它明确表示这是一个您必须永远不会写的危险破坏代码的示例.因此,在什么情况下要求编写这样的代码是不可能的.我现在真的不明白你的问题,我看到了代码的来源; 你永远不应该写这样的代码; 这是整个点的样品.