Что происходит при доступе к общей функции из экземпляра объекта - PullRequest
1 голос
/ 28 декабря 2010

Контекст этого вопроса заключается в том, что я пытаюсь отладить проблемы с производительностью (кроме очевидных, о которых я уже знаю и могу найти).

Я унаследовал кодовую базу (VB.NET) для приложения ASP.NET. Это приложение, которое было разработано еще в дни .NET 1.1, и было первым приложением .NET для многих разработчиков, которые над ним работали.

В этой базе кода находится класс DatabaseUtility, который содержит несколько общих общедоступных методов, а также непубличные общедоступные функции и вспомогательные элементы для операций CRUD для базы данных (SQL Server).

В моем "BL" часто встречается метод, который создает экземпляр DatabaseUtility, который, по сути, выясняет, какой должна быть строка соединения, и открывает соединение, а также дает разработчику указатель на другие методы, содержащиеся в нем. .

Dim utility as New DatabaseUtility()

Получив это, я начинаю создавать параметры, которые собираюсь передать одному из методов в DatabaseUtility (например, GetDataSet). В моей DatabaseUtility есть метод Shared, называемый CreateParameter, который делает это по существу. Он создает объект SqlParameter, поэтому я могу добавить его в коллекцию параметров.

Теперь кодовая база изобилует этим:

utility.CreateParameter(...)

Однако, поскольку CreateParameter является методом общего доступа, я не уверен, что происходит за кулисами. Я знаю, потому что это общий член, что экземпляр DatabaseUtility не создается, когда я называю его так:

DatabaseUtility.CreateParameter(...)

Однако, поскольку я вызываю его из экземпляра (утилиты), это вообще меняет поведение?

1 Ответ

1 голос
/ 29 декабря 2010

Из спецификации VB.NET (мой акцент).

Общий метод не работает на конкретный экземпляр типа и может быть вызывается непосредственно из типа, а чем через конкретный случай тип. Это действительно, однако, использовать экземпляр для квалификации общего способ.

Следовательно, нет, не имеет значения, вызываете ли вы его из экземпляра или нет.

...