这个问题的背景是我正在尝试调试性能问题(除了我已经知道并且可以找到的明显问题之外)。
我为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(...)
但是,因为我是从实例(实用程序)调用它,这是否会改变行为?
答案 0 :(得分:1)
来自VB.NET spec(我的重点)。
共享方法不能在a上运行 类型的具体实例可能是 直接从类型调用 而不是通过特定的实例 一种。但是,使用它是有效的 限定共享的实例 方法
因此,不,您是否从实例调用它并不重要。