0

我有几种方法可以将常见的 .NET 对象 OleDbConnection、XMLDocument、webBrowser 传递给对其进行操作的方法。我将它们作为没有 ref/out 关键字的对象传递。喜欢:

void btn_click()
{
  OleDbConnection dbConn; XMLDocument Doc; webBrowser Browser;

  // Do operations on dbConn, Doc and Browser here

  Call(dbConn, Doc, Browser);
}

void Call(OleDbConnection dbConn, XMLDocument Doc, webBrowser Browser)
{
  // Do operations on dbConn, Doc and Browser here

  Call2(OleDbConnection dbConn, XMLDocument Doc, webBrowser Browser);
}

void Call2(OleDbConnection dbConn, XMLDocument Doc, webBrowser Browser)
{
  // Do further operations on dbConn, Doc and Browser here
}

这些方法被调用了数千次,因此每次都会传递对象。该程序运行良好。在调用的方法中没有一个对象被重置或重新初始化,只使用它们的属性数据。所以我相信我不需要将它们作为“参考”传递。

我的问题是,如果我将所有这些作为 ref 传递,是否会有任何显着的性能提升,尤其是在数据库连接或网络浏览器导航方面?是否有任何文章描述了当对象作为 ref 传递和不传递时的性能提升?

4

1 回答 1

1

首先直接回答您的问题:不,您不会通过使用 ref 获得任何显着收益:您的对象都是引用类型(请参见此处:http: //msdn.microsoft.com/en-us/library/t63sy5hs (v= vs.80).aspx ) 所以只有它们自己的引用被传递给函数。

现在除此之外,我在您的代码中看到您有一堆使用相同参数的方法,我认为考虑重构一下并将所有这些方法分组到(一些)类中并将您的连接放在xml中是明智的文档和浏览器作为类的属性。我认为这会让你的代码更干净。

于 2013-07-01T19:23:27.800 回答