如果我有多次调用的方法,例如:
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
;在我的第一个问题中提出的方法之外并使用它?
答案 0 :(得分:9)
myObject
似乎没有任何有用的状态;所以:做一个static
方法 - 问题解决了;没有分配,没有虚拟呼叫:
public int CalledManyTimes(int a, int b)
{
int c = a + b + MyObject.GetSomeValue(); // static method
return c;
}
其他任何事情:个人资料。
查看您的具体问题:
通过放置MyObject myObject可以提升性能;在方法之外,所以它只声明一次,或者编译器会自动执行此操作吗?
初始化零次甚至更快。但是,如果 某个状态在问题中并不明显,那么是的,我希望重用单个实例更有效 - 但是,这会改变语义(在原文中)迭代之间不共享状态。)
结构是如何传递的?
默认情况下,只要您瞥一眼方向,就会将它们复制到堆栈中。您可以使用ref
来避免复制,如果结构大量超重,或者需要更新(理想情况下需要重新分配,而不是可变性),这可能很有用。