C# Unity-Vector3结构-通过引用传递值类型

C# Unity-Vector3结构-通过引用传递值类型,c#,function,reference,pass-by-reference,value-type,C#,Function,Reference,Pass By Reference,Value Type,在Unity中,您必须在代码中多次处理Vector2和Vector3值。这两种都是结构,这意味着当您将代码模块化为小函数时,每次将这些值传递给函数参数时,您都会复制它们。是的,您可以在堆栈中复制它们,但如果我们能够传递它的引用,我们仍然可以减少工作量。我们可以通过引用将值类型传递给函数,而不必处理装箱问题 换句话说,我可以在堆栈上获取一个值类型变量的引用以供以后使用吗 我是C++的家伙,这就是为什么我会问这样愚蠢的问题: < P>是的,你可以通过引用在C语言中传递变量。例如: void Foo(

在Unity中,您必须在代码中多次处理
Vector2
Vector3
值。这两种都是结构,这意味着当您将代码模块化为小函数时,每次将这些值传递给函数参数时,您都会复制它们。是的,您可以在堆栈中复制它们,但如果我们能够传递它的引用,我们仍然可以减少工作量。我们可以通过引用将值类型传递给函数,而不必处理装箱问题

换句话说,我可以在堆栈上获取一个值类型变量的引用以供以后使用吗


我是C++的家伙,这就是为什么我会问这样愚蠢的问题:

< P>是的,你可以通过引用在C语言中传递变量。例如:

void Foo(ref Vector3 myVec)
{
  ...
}

Vector3 vectorA = Vector3.Zero;
Foo(ref vectorA);

尝试使用ref关键字。。。参考:见。长话短说,您可能最终得到的代码略低于最佳代码,但C#并不是为在这一级别上进行优化而设计的。如果您愿意,您可以查找关键字
safe
和“normal”指针,但“以防万一”这样做不是一个好主意。任何经过
ref
的wat和编译时都要确保它不会在函数内部被修改?(就像C++中的常量引用参数一样)@Narek No C#不提供这样的参数functionality@Narek现在在C#7.2中添加了此功能: