2010-08-13 15 views
5

Recibo mensajes confusos acerca de esto, así que espero que alguien me aclare esto.Cuándo usar los métodos compartidos en .NET

debo utilizar compartido métodos/funciones en la siguiente situación:

que tienen una clase genérica denominada "Persona". Esta clase representa una persona en la base de datos.

Tengo una clase de administrador llamada "PersonManager". Esta clase contiene métodos que agrega, actualiza y elimina objetos Persona individuales. También existe un método para buscar Personas desde la base de datos.

¿Deberían declararse estos métodos en la clase manager como métodos compartidos? O es más apropiado crear una nueva instancia de la clase PersonManager cada vez y llamar al método apropiado en ella.

lo tanto, si compartían:

PersonManager.AddPerson(NewPerson) 

versus no compartían:

Dim MyPersonManager as PersonManager 
MyPersonManager.AddPerson(NewPerson) 

Cuando se busca personas, la versión compartida sería:

Dim dt as New DataTable 
dt = PersonManager.GetPersons 

frente a la no versión compartida:

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

Aquí está la respuesta C# http://stackoverflow.com/questions/241339/when-to-use-static-classes-in-c Reemplace la palabra estática con shared para VB Answer – Bob

Respuesta

1

Dado que los métodos comunes y miembros son llamados estática en C# ya hay cosas en desbordamiento de pila ...

When to use static classes in C#

+0

¡Gracias por el enlace! He estado en modo VB por un tiempo y no había considerado el lado C# de las cosas. – Michael

2

Utilice métodos estáticos (compartidos en Visual Basic) cuando contienen un comportamiento que no está asociado a un objeto en particular. No requieren ningún estado para realizar sus tareas.

Ver Static Classes and Static Class Members en el MSDN:

Un método estático, campo, propiedad o evento es exigible en una clase, incluso cuando se ha creado ninguna instancia de la clase. Si se crean instancias de la clase, no se pueden usar para acceder al miembro estático. Solo existe una copia de campos y eventos estáticos, y los métodos y propiedades estáticos solo pueden acceder a campos estáticos y eventos estáticos. Los miembros estáticos a menudo se usan para representar datos o cálculos que no cambian en respuesta al estado del objeto; por ejemplo, una biblioteca matemática puede contener métodos estáticos para calcular el seno y el coseno.

En su caso, es probable que no desea utilizar los métodos estáticos si contiene algún estado PersonManager objeto. En su lugar, debería poder crear múltiples objetos PersonManager y manipularlos por separado.

+0

Entonces, en este ejemplo, ¿se considera que PersonManager contiene el estado del objeto? En este momento, me parece que el PersonManager simplemente está haciendo algo y no tiene nada. Solo me pregunto acerca de las mejores prácticas. Otro ejemplo podría ser el manejo de errores.Donde se usa un método para enviar un correo electrónico que contiene el error de excepción a alguien. Un método compartido/de estado parece ser el mejor para ese caso, ¿sí? – Michael

Cuestiones relacionadas