c# - 如何测试 C# ref 参数是否引用相同的项目

标签 c#

在 C# 中给定一个具有以下签名的函数

public static void Foo(ref int x, ref int y)

如果函数是用

调用的
int A = 10;
Foo(ref A, ref A)

在函数 Foo 中是否可以测试 x 和 y 参数引用同一个变量?对 x 和 y 进行简单的等效测试是不够的,因为在两个不同变量具有相同值的情况下也是如此。

最佳答案

如果你愿意使用不安全的代码,你可以比较底层变量地址:

public static bool Foo(ref int a, ref int b)
{
    unsafe
    {
        fixed (int* pa = &a, pb = &b)
        {
            // return true iff a and b are references to the same variable
            return pa == pb; 
        }
    }
}

(根据@Michael Graczyk 的评论,编辑以从方法签名中删除 unsafe。)

关于c# - 如何测试 C# ref 参数是否引用相同的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497095/

相关文章:

c# - 当 StackPanel 宽度为全宽时,WP8 ListBox DataTemplate 抛出异常

c# - 如何从平面列表构建嵌套 HTML 列表

c# - 在 WPF 中单击更改圆圈 "start-stop"按钮背景图像

c# - 正则表达式问题 C#

c# - 没有控制台窗口的 AppServiceBridge

C# 多线程,无重复

c# - 编写基本的表达式生成器

c# - 如何使用带进度条的 ASP.NET MVC4 Web Api 上传大文件

c# - 如何在 Windows 通用应用程序中使用自定义字体?

c# - 如何在按下 "."键时捕获 system.windows.forms.keys