我看说明Interlocked.Increment
。方法签名:
public static int Increment (ref int location);
这里进一步写了:
异常
NullReferenceException
地址location
是一个指针null
。
我不明白的是应该将什么作为参数传递,以便地址值变成null
. 这在 C# 中甚至可能吗?如何?
我看说明Interlocked.Increment
。方法签名:
public static int Increment (ref int location);
这里进一步写了:
异常
NullReferenceException
地址location
是一个指针null
。
我不明白的是应该将什么作为参数传递,以便地址值变成null
. 这在 C# 中甚至可能吗?如何?
是的,很容易!
异常中的堆栈跟踪显示
- 也就是说,下降的是函数
Interlocked.Increment
,而不是空指针的取消引用。另一种方法,没有
unsafe
-blocks:好吧,在纯 C# 中,没有互操作
Marshal
和类似的东西,这当然是不可能的。大概是这样的
控制台输出