如果我有一个被多次调用的方法,例如:
public int CalledManyTimes(int a, int b)
{
MyObject myObject = new myObject();
int c = a + b + myObject.GetSomeValue();
return c;
}
Run Code Online (Sandbox Code Playgroud)
通过放置MyObject myObject;方法之外是否有性能提升,所以它只声明一次,或者编译器会自动执行此操作吗?
结构究竟是如何传递的?
我传递一个Point结构的方法(点只包含INT的x,int y)对,这方法改变的值,并返回一个new Point(newX, newY);是更好地改变已传递到方法的点并返回?或者我可以创建一个Point point; 在我的第一个问题中提出的方法之外并使用它?
myObject似乎没有任何有用的状态; 所以:做一个static方法 - 解决问题; 没有分配,没有虚拟通话:
public int CalledManyTimes(int a, int b)
{
int c = a + b + MyObject.GetSomeValue(); // static method
return c;
}
Run Code Online (Sandbox Code Playgroud)
其他任何事情:个人资料.
看看你的具体问题:
通过放置MyObject myObject可以提升性能; 在方法之外,所以它只声明一次,或者编译器会自动执行此操作吗?
将其初始化为零次甚至更快.但是,如果是一些国家不是很明显的问题,那么是的,我希望它是更有效的重用单个实例-但是,改变语义(在原来的状态不是迭代之间共享).
结构究竟是如何传递的?
默认情况下,只要您瞥一眼方向,就会将它们复制到堆栈中.您可以使用ref以避免复制,如果结构大量超重,或者需要更新(理想情况下需要重新分配,而不是可变性),这可能很有用.