在C#中给出具有以下签名的函数
public static void Foo(ref int x, ref int y)
Run Code Online (Sandbox Code Playgroud)
如果使用该函数调用
int A = 10;
Foo(ref A, ref A)
Run Code Online (Sandbox Code Playgroud)
函数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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
(unsafe根据@Michael Graczyk的评论,编辑从方法签名中删除.)
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |