从对象实例访问共享功能时会发生什么

时间:2010-12-28 20:54:37

标签: sql-server vb.net ado.net class-design

这个问题的背景是我正在尝试调试性能问题(除了我已经知道并且可以找到的明显问题之外)。

我为ASP.NET应用程序继承了代码库(VB.NET)。这是一个在.NET 1.1天后开发的应用程序,并且是许多开发人员的第一个.NET应用程序。

在此代码库中有一个名为DatabaseUtility的类,它包含多个共享公共方法以及用于对数据库(SQL Server)进行CRUD操作的非共享公共函数和子类。

在我的“BL”中,一个方法创建一个DatabaseUtility的实例是很常见的,它基本上可以找出连接字符串应该是什么并打开一个连接,并为开发人员提供其中包含的其他方法的句柄。

Dim utility as New DatabaseUtility()

有了这个,我开始创建参数,我将传递给DatabaseUtility中的一个方法(如GetDataSet)。我的DatabaseUtility中有一个名为CreateParameter的Shared方法,它基本上就是这样做的。它创建了一个SqlParameter对象,因此我可以将它添加到Parameters集合中。

现在,代码库中充斥着很多:

utility.CreateParameter(...)

但是,因为CreateParameter是一个Shared方法,所以我不确定幕后会发生什么。我知道,因为它是一个共享成员,当我这样调用它时,不会创建DatabaseUtility的实例:

DatabaseUtility.CreateParameter(...)

但是,因为我是从实例(实用程序)调用它,这是否会改变行为?

1 个答案:

答案 0 :(得分:1)

来自VB.NET spec(我的重点)。

  

共享方法不能在a上运行   类型的具体实例可能是   直接从类型调用   而不是通过特定的实例   一种。但是,使用它是有效的   限定共享的实例   方法

因此,不,您是否从实例调用它并不重要。