Когда использовать общие методы в .NET - PullRequest
5 голосов
/ 13 августа 2010

Я получаю смешанные сообщения об этом, так что я надеюсь, что кто-то может разобраться со мной.

Должен ли я использовать общие методы / функции в следующей ситуации:

У меня есть универсальный класс с именем "Person". Этот класс представляет человека в базе данных.

У меня есть класс менеджера с именем "PersonManager". Этот класс содержит методы, которые добавляют, обновляют, удаляют отдельные объекты Person. Также существует метод для поиска людей из базы данных.

Должны ли эти методы в классе менеджера быть объявлены как общие методы? Или более уместно каждый раз создавать новый экземпляр класса PersonManager и вызывать для него соответствующий метод.

Итак, если поделился:

PersonManager.AddPerson(NewPerson)

по сравнению с незарегистрированными:

Dim MyPersonManager as PersonManager
MyPersonManager.AddPerson(NewPerson)

При поиске Persons общая версия будет выглядеть так:

Dim dt as New DataTable
dt = PersonManager.GetPersons

по сравнению с необщедоступной версией:

Dim dt as New DataTable
Dim MyPersonManager as New PersonManager
dt = MyPersonManager.GetPersons

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

Используйте статические методы (совместно используемые в Visual Basic), когда они содержат поведение, не связанное с конкретным объектом.Они не требуют какого-либо состояния для выполнения своих задач.

См. Статические классы и члены статических классов в MSDN:

Статический метод, поле,свойство или событие вызывается в классе, даже если экземпляр класса не был создан.Если какие-либо экземпляры класса созданы, их нельзя использовать для доступа к статическому члену.Существует только одна копия статических полей и событий, и статические методы и свойства могут обращаться только к статическим полям и статическим событиям. Статические члены часто используются для представления данных или расчетов, которые не изменяются в зависимости от состояния объекта;например, математическая библиотека может содержать статические методы для вычисления синуса и косинуса.

В вашем случае вы, вероятно, не хотите использовать статические методы, если PersonManager содержит некоторое состояние объекта.Вместо этого вы должны иметь возможность создавать несколько PersonManager объектов и управлять ими по отдельности.

1 голос
/ 13 августа 2010

Поскольку разделяемые методы и члены называются статическими в C #, в переполнении стека уже есть материал ...

Когда использовать статические классы в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...