void Afunction(int* outvar)
{
if(outvar)
*outvar = 1337;
}
注意特性:它允许您有选择地通过引用传递变量,以便它可以由函数设置。
我最接近的猜测是 (ref int?outvar)
但这会产生 ref (int?) NOT (ref int)?这就是我需要的
此功能几乎不是 c 或 c++ 中很少使用的功能,所以我认为一定有一些等效的功能? 编辑: 所以让我试试一个很好的例子,我认为 Colision 检查函数是一个主要的例子,你有一个主要的测试是两个物体是否接触,然后是投影 vector 的可选输出,计算投影 vector 需要额外的时间时间,所以你只想在他们想要的时候做,另一方面,它通常使用很多在做碰撞测试时计算的信息。
bool Collide(colObject obj1, colObject obj2, Vector3* projection)
{
//do a bunch of expensive operations to determine if there is collision
if(!collided)return false;
if(projection != NULL)
{
//do more expensive operations, that make use of the above operations already done,
//to determine the proj vect
*proj = result;
}
return true;
}
请注意,我目前只是将 C++ 代码移植到 C#,因此我可能没有任何真正的“开箱即用”解决方案
最佳答案
您在 C# 中可以获得的最好结果是 Action<int>
,像这样:
void MyFunction(Action<int> valueReceiver) {
if (valueReceiver != null)
valueReceiver(1337);
}
用法:
MyFunction(null);
MyFunction(v => someVariable = v);
关于c# - 什么相当于在 C# 中通过地址传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261402/