这两种C#方法有什么区别

时间:2010-05-20 09:04:31

标签: c# mysql database

这两种情况有什么区别。首先,如果我打开连接并将其作为参数传递给我的方法,那么直接在方法中打开连接?

cnn.open()
func(cnn,param1,param2);

VS

func(cnn, param1,param2)
{
  cnn.open();
  //open connection here
}

5 个答案:

答案 0 :(得分:2)

除了在一种情况下,你发布的代码没有区别,你的调用函数需要负责打开/关闭连接,另一方面,你希望函数能够做到这一点。

答案 1 :(得分:0)

不同之处在于,在第二种方法中,您打开连接。

在第一种方法中,您希望该方法仅使用不关心清理资源的连接。

答案 2 :(得分:0)

没有功能差异,但打开和关闭连接的线应该尽可能地靠近,因此它们应该采用相同的方法。

答案 3 :(得分:0)

不同之处在于您希望如何使用连接和性能。如果该函数是一次性调用并且您没有调用其他函数,或者没有对连接执行任何其他操作,那么该函数的第二个版本甚至可以简化为:

func(param1, param2) {
    Connection c = ....
    c.Open(...);
    ...
    c.Close();
}

但是,如果在连接上调用许多函数,甚至在连接上多次调用该函数,或者如果连接的创建和配置位于代码中的更高层,那么您应该使用第一个版本的函数,如果未打开连接则添加抛出异常。

答案 4 :(得分:0)

嗯,我认为你不应该问不同,而应该解释你所处的情况,并要求就必须使用的情况提出建议。

无论如何,正如大家告诉你的那样,在案例2中,连接对象及其生命周期被封装在被调用者函数中。如果数据库操作不需要此功能,建议使用此方法。

否则,如果您要执行任何其他数据库活动,请执行此函数作用域,例如调用函数或从调用函数调用的任何其他函数(除了func),那么您应该使用案例1。