Principales respuestas
Static

Pregunta
-
Hola a todos una consulta si yo tengo una clase en mi capa datos que voy a mostrar a continuación. Si en mi clase tengo métodos static y a la clase le pongo estatic y cuando llame al metodo de mi capa lógica ya no sera necesario instanciar la clase? esta es mi pregunta.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Common; using E = Entidades; using System.Data; namespace CapaDatos { public static class ClienteCD { public static int GenerarCodigo() { int cod; using (DbConnection cn = Conexion.Conectar()) { cn.Open(); DbCommand cmd = cn.CreateCommand(); string strSQL = "SELECT ISNULL(MAX(idcliente) + 1 ,0) AS idCliente FROM Clientes"; cmd.CommandText = strSQL; cod = Convert.ToInt32(cmd.ExecuteScalar()); return cod; } } public static string AddCliente(E.ClienteE cli) { try { using (DbConnection cn = Conexion.Conectar()) { cn.Open(); using (DbCommand cmd = cn.CreateCommand()) { cmd.CommandText = "xspAddCliente"; cmd.CommandType = CommandType.StoredProcedure; Utilidades util = new Utilidades(); cmd.Parameters.Add(util.CreateParameter("@idCliente", DbType.Int32, cli.IdCliente)); cmd.Parameters.Add(util.CreateParameter("@identificacion", DbType.AnsiString, cli.Identificacion, 13)); cmd.Parameters.Add(util.CreateParameter("@razonSocial", DbType.AnsiString, cli.RazonSocial, 80)); cmd.Parameters.Add(util.CreateParameter("@nombreComercial", DbType.AnsiString, cli.NombreComercial, 60)); cmd.Parameters.Add(util.CreateParameter("@ciudad", DbType.AnsiString, cli.Ciudad, 40)); cmd.Parameters.Add(util.CreateParameter("@direccion", DbType.AnsiString, cli.Direccion, 100)); cmd.Parameters.Add(util.CreateParameter("@telefono", DbType.AnsiString, cli.Telefono, 9)); cmd.Parameters.Add(util.CreateParameter("@celular", DbType.AnsiString, cli.Celular, 9)); cmd.ExecuteNonQuery(); return String.Empty; } } } catch (Exception ex) { MessageBox.Show (ex.ToString()); return ex.Message; } }
Pedro Avila
Respuestas
-
No. Cualquier método static, ya sea una clase static o no.
public class ClaseNoEstatica { public static void ElMetodoEstatico() { ... } } //Puede hacerse lo siguiente sin una instancia: ClaseNoEstatica.ElMetodoEstatico();
Jose R. MCP
Code Samples- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 13:59
-
Si eso satisface sus requerimientos, perfecto entonces. Eso suele hacerse con clases que contienen métodos utilitarios, como conversiones de tipos de datos y demás.
Jose R. MCP
Code Samples- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 13:59
-
hola
ya sea que definas
public class CapaDatos{
public static string AddCliente(E.ClienteE cli) {
}
}
o que definas
public static class CapaDatos{
public static string AddCliente(E.ClienteE cli) {
}
}
puedes acceder al metodo Addcliente sin crear una instancia de la clase
la diferencia en pones el static a nivel de clase que que limitas que esa clase solo tendra metodo estaticos, o puede dejarlo abierto para tener tambien metodo de instancia
a veces es util dejarlo mixto porque podrias hacer
public class Usuario{
public bool Autenticar(string nombre, string pass) {
}
public static Encriptar(string texto){
}
}
o sea tienes una clase que es de isntancia y otra que es una utilidad para encriptar que es static
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 14:12
-
depende si vas a utliziar algun patron tipo IoC entonces el static no lo uses nunca en esa implementacion
ahora si es algo simple que sabes nunca vas a extender entocnes podrias usarlo
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 14:14
Todas las respuestas
-
Los métodos static pueden accederse sin tener una instancia de la clase.
Jose R. MCP
Code Samples -
-
No. Cualquier método static, ya sea una clase static o no.
public class ClaseNoEstatica { public static void ElMetodoEstatico() { ... } } //Puede hacerse lo siguiente sin una instancia: ClaseNoEstatica.ElMetodoEstatico();
Jose R. MCP
Code Samples- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 13:59
-
-
Si eso satisface sus requerimientos, perfecto entonces. Eso suele hacerse con clases que contienen métodos utilitarios, como conversiones de tipos de datos y demás.
Jose R. MCP
Code Samples- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 13:59
-
hola
ya sea que definas
public class CapaDatos{
public static string AddCliente(E.ClienteE cli) {
}
}
o que definas
public static class CapaDatos{
public static string AddCliente(E.ClienteE cli) {
}
}
puedes acceder al metodo Addcliente sin crear una instancia de la clase
la diferencia en pones el static a nivel de clase que que limitas que esa clase solo tendra metodo estaticos, o puede dejarlo abierto para tener tambien metodo de instancia
a veces es util dejarlo mixto porque podrias hacer
public class Usuario{
public bool Autenticar(string nombre, string pass) {
}
public static Encriptar(string texto){
}
}
o sea tienes una clase que es de isntancia y otra que es una utilidad para encriptar que es static
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 14:12
-
depende si vas a utliziar algun patron tipo IoC entonces el static no lo uses nunca en esa implementacion
ahora si es algo simple que sabes nunca vas a extender entocnes podrias usarlo
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Pedro Ávila miércoles, 28 de noviembre de 2012 14:14
-