如果我有一个被多次调用的方法,例如:
public int CalledManyTimes(int a, int b)
{
MyObject myObject = new myObject();
int c = a + b + myObject.GetSomeValue();
return c;
}
将MyObject myObject;
放在方法之外,从而只声明一次,是否会提高性能,或者编译器会自动这样做?
结构究竟是如何传递的?
我将一个Point结构传递给一个方法(Point只包含int x,int y),而该方法正在更改值并返回new Point(newX, newY);
。更改传递给该方法的Point并返回该值更好吗?或者我可以创建一个Point point
;在我第一个问题中提出的方法之外,并使用它?
myObject
似乎没有可用状态;所以:使一个static
方法——问题得到解决;无分配,无虚拟调用:
public int CalledManyTimes(int a, int b)
{
int c = a + b + MyObject.GetSomeValue(); // static method
return c;
}
其他任何东西:简介。
查看您的具体问题:
将MyObject放入MyObject是否会提高性能;在方法之外,所以它只声明一次,或者编译器会自动这样做吗?
零次初始化甚至更快。然而,如果中有某个状态在问题中不明显,那么是的,我希望重用单个实例会更有效——然而,这会改变语义(在原始情况下,状态在迭代之间不共享)。
结构究竟是如何传递的?
默认情况下,只要你朝它们的方向看一眼,它们就会被复制到堆栈上。您可以使用ref
来避免复制,如果结构严重超重或需要更新(理想情况下使用重新分配,而不是可变),这可能会很有用。