繁体   English   中英

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

[英]What is difference between this two C# methods

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

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

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

与您发布的代码没有什么不同,除了在一种情况下,您的调用函数需要注意打开/关闭连接,在另一种情况下,您希望函数可以完成此操作。

区别在于在第二种方法中,您打开了连接。

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

没有功能上的区别,但用于打开和关闭连接的线通常应尽可能靠近,因此它们应采用相同的方法。

不同之处在于您如何使用连接和性能。 如果该函数是一次调用,而您不调用其他函数,或者对连接不做任何其他事情,则该函数的第二个版本甚至可以简化为:

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

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

好吧,我认为您不应该要求与众不同,而应该解释您所处的情况并就必须使用哪种情况提出建议。

无论如何,正如每个人都告诉您的那样,在第2种情况下,连接对象及其生命周期封装在被调用方函数中。 如果不需要此功能之外的数据库操作,建议使用此功能。

否则,如果您要在此函数范围之外完成任何其他数据库活动,例如在调用者函数中或从调用者函数中调用的任何其他函数(func除外),则应使用情况1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM