Use the ref and out keyword on a pointer parameter
我在学习C和C,这个问题是C的。为什么要在指针上使用out和ref关键字?通过指针,您可以直接访问变量。我在这里的msdn上找到了这个代码。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 | 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; } } |
Why would you ever use the out and ref keywords on pointers?
那么,你为什么要使用out和ref关键字,period?当您希望调用修改现有变量的方法时,可以使用out关键字。如果要调用读取和修改现有变量的方法,可以使用ref关键字。变量是指针类型似乎没有特别的相关性。
如果您的问题实际上是"您能给我一个现实代码的例子吗?在这个例子中,您可能希望通过引用传递一个指针类型的变量?"然后我必须承认,在编写C代码的十年中,我从未在生产代码中使用指针,很少使用ref,所以我没有个人经验的例子。但我可以想象这样的事情。例如,想象一个传统的C样式的双重链接列表。在这种情况下,您可能希望同时读取和改变列表的头和尾指针,并通过将
既然您已经包含了找到此代码的链接,那么我注意到它明确地表示这是一个危险的、被破坏的代码示例,您永远不能编写它。因此,询问在什么情况下您希望编写这样的代码是不可能的。既然我看到了代码的起源,我真的不理解您的问题的要点;您不应该这样编写代码;这就是示例的全部要点。
Why would you ever use the out and ref keywords on pointers?
当您想向函数的调用者提供一个指针时,在
如果不需要改变指针,而只需要取消对指针的引用以查看指针指向的是什么,那么可以通过值而不是引用传递指针,这是不使用
我从来没有在C_中使用指针,但我确实在引用类型中使用了ref参数。理由:目的明确。如果我看到一个方法接受一个引用参数,我知道这个参数会发生变化,所以不会有什么意外。