elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  pregunta sobre la plataforma de desarrollo de .NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pregunta sobre la plataforma de desarrollo de .NET  (Leído 2,797 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
pregunta sobre la plataforma de desarrollo de .NET
« en: 18 Abril 2020, 18:18 pm »

Hola tengo una dudas sobre la creación de clases en C# con campos y atributos la estoy creando de esta forma y otra cosa cuando uso el refactorizador me pregunta si queiro crear las propieades y seguir usando campos o usar directamente las propiedades, infiere mucho eso en mi codigo?

Código
  1. public class Usuario
  2.    {
  3.        private int usu_Id;
  4.        private string usu_NombreUsuario;
  5.        private string usu_Contraseña;
  6.        private string usu_ApellidoNombre;
  7.        private string rol_Codigo;
  8.  
  9.        public int Usu_Id
  10.        {
  11.            get { return usu_Id; }
  12.            set { usu_Id = value; }
  13.        }
  14.        public string Usu_NombreUsuario
  15.        {
  16.            get { return usu_NombreUsuario; }
  17.            set { usu_NombreUsuario = value; }
  18.        }
  19.        public string Usu_Contraseña
  20.        {
  21.            get { return usu_Contraseña; }
  22.            set { usu_Contraseña = value; }
  23.        }
  24.        public string Usu_ApellidoNombre
  25.        {
  26.            get { return usu_ApellidoNombre; }
  27.            set { usu_ApellidoNombre = value; }
  28.        }
  29.        public string Rol_Codigo
  30.        {
  31.            get { return rol_Codigo; }
  32.            set { rol_Codigo = value; }
  33.        }
  34.  
  35.        public Usuario()
  36.        {
  37.        }
  38.  
  39.        public Usuario(int usu_Id, string usu_NombreUsuario, string usu_Contraseña, string usu_ApellidoNombre, string rol_Codigo)
  40.        {
  41.            this.usu_Id = usu_Id;
  42.            this.usu_NombreUsuario = usu_NombreUsuario;
  43.            this.usu_Contraseña = usu_Contraseña;
  44.            this.usu_ApellidoNombre = usu_ApellidoNombre;
  45.            this.rol_Codigo = rol_Codigo;
  46.        }
  47.    }

Por ultimo algunos atajos para crear constructor por defect y otros con parametros pero.. estos parametros modifican los campos o las propiedades? no entiendo bien eso y tambien me gustaria saber como generar las propiedades de forma automatica.  :laugh: ;-)


En línea

7w7
**Aincrad**


Desconectado Desconectado

Mensajes: 683



Ver Perfil WWW
Re: pregunta sobre la plataforma de desarrollo de .NET
« Respuesta #1 en: 18 Abril 2020, 19:14 pm »

1) No especificas bien que quieres hacer, la verdad no te entendi, veo una clase "Usuarios" en la cual hay variables y Propiedades del mismo nombre.

2) veo que tienes propiedades que son SET y GET y pasas el valor a una variable. me explico :

tienes la Propiedad :

Código
  1. public int Usu_Id
  2.        {
  3.            get { return usu_Id; }
  4.            set { usu_Id = value; }
  5.        }

esta Propiedad Pasa el valor a :

Código
  1. private int usu_Id;

de por si el nombre de estas dos son idénticos , eso no se hace.

Tienes 2 subs del mismo Nombre :

Código
  1. public Usuario()
  2.        {
  3.        }

y

Código
  1. public Usuario(int usu_Id, string usu_NombreUsuario, string usu_Contraseña, string usu_ApellidoNombre, string rol_Codigo)
  2.        {
  3.            this.usu_Id = usu_Id;
  4.            this.usu_NombreUsuario = usu_NombreUsuario;
  5.            this.usu_Contraseña = usu_Contraseña;
  6.            this.usu_ApellidoNombre = usu_ApellidoNombre;
  7.            this.rol_Codigo = rol_Codigo;
  8.        }

De por si esta ultimo sub , hace la misma funcion que hacen las propiedades , Escribir y leer el contenido de la variable.

osea hay puro codigo que repite la misma funcion .

ademas de que no logro entender que quieres hacer.



Algo ordenado seria como esto :

Código
  1.  
  2. public class UserHook
  3. {
  4.    private int _usu_Id = 0;
  5.    private string _usu_NombreUsuario = string.Empty;
  6.    private string _usu_Contraseña = string.Empty;
  7.    private string _usu_ApellidoNombre = string.Empty;
  8.    private string _rol_Codigo = string.Empty;
  9.  
  10.  
  11.  
  12.    public int Usu_Id
  13.    {
  14.        get
  15.        {
  16.            return _usu_Id;
  17.        }
  18.    }
  19.  
  20.    public string Usu_NombreUsuario
  21.    {
  22.        get
  23.        {
  24.            return _usu_NombreUsuario;
  25.        }
  26.    }
  27.  
  28.    public string Usu_Contraseña
  29.    {
  30.        get
  31.        {
  32.            return _usu_Contraseña;
  33.        }
  34.    }
  35.  
  36.    public string Usu_ApellidoNombre
  37.    {
  38.        get
  39.        {
  40.            return _usu_ApellidoNombre;
  41.        }
  42.    }
  43.  
  44.    public string Rol_Codigo
  45.    {
  46.        get
  47.        {
  48.            return _rol_Codigo;
  49.        }
  50.    }
  51.  
  52.  
  53.  
  54.    public UserHook(int usu_Id, string usu_NombreUsuario, string usu_Contraseña, string usu_ApellidoNombre, string rol_Codigo)
  55.    {
  56.        _usu_Id = usu_Id;
  57.        _usu_NombreUsuario = usu_NombreUsuario;
  58.        _usu_Contraseña = usu_Contraseña;
  59.        _usu_ApellidoNombre = usu_ApellidoNombre;
  60.        _rol_Codigo = rol_Codigo;
  61.    }
  62. }
  63.  

Lo usarías de la siguiente manera :

Código
  1.  private int userIDLocal = 100;
  2.        private static string userName = "Aincrad";
  3.        private static string UserAppellido = "Fish";
  4.        private static string userPass = "123456";
  5.        private static string RolCode = "321";
  6.        private UserHook Usuarios = new UserHook(15211, userName, userPass, UserAppellido, RolCode);
  7.  
  8.        private void button1_Click(object sender, EventArgs e)
  9.        {
  10.            LeerValores();
  11.        }
  12.  
  13.        public void LeerValores()
  14.            {
  15.                MessageBox.Show("UserID : " + Usuarios.Usu_Id + Environment.NewLine + "Name : " + Usuarios.Usu_NombreUsuario + "  " + Usuarios.Usu_ApellidoNombre + Environment.NewLine + "Password : " + Usuarios.Usu_Contraseña + Environment.NewLine + "RolCode : " + Usuarios.Rol_Codigo);
  16.            }



Tendrias algo asi :




Aunque tambien Podrias quitar ese sub y usar Puras Propiedades.
tambien Podrias incluso simplemente guardar todas las variables de Usuario en una Estructura.




PD: Pinche lenguaje todo culero, se te pasa un ";" , y ya anda Marcando todo el codigo como error.  :¬¬



« Última modificación: 18 Abril 2020, 19:51 pm por **Aincrad** » En línea



Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: pregunta sobre la plataforma de desarrollo de .NET
« Respuesta #2 en: 18 Abril 2020, 20:57 pm »

Que lindo  ;-)

PD: Que vuelvan los viejos emojis, porque pusieron zapallos?
En línea

7w7
EdePC
Moderador Global
***
Conectado Conectado

Mensajes: 2.176



Ver Perfil
Re: pregunta sobre la plataforma de desarrollo de .NET
« Respuesta #3 en: 18 Abril 2020, 22:19 pm »

Que lindo  ;-)

PD: Que vuelvan los viejos emojis, porque pusieron zapallos?

- Cierto, yo empecé a creer que había dormido tanto tiempo que ya estábamos en Halloween XD. Tampoco entiendo porque le llaman calabaza a los zapallos XD, en mi país las calabazas son muy diferentes.



- Con respecto a la pregunta, pues diferenciar campo, atributo y propiedad, según tengo entendido en C# los atributos son un mecanismo extensible para agregar información personalizada al código (ensamblados, tipos, miembros, valores de retorno y parámetros) y suelen tener una sintáxis entre corchetes [ObsoleteAttribute].

- Entonces me quedo con Campo y Propiedad, aquí la diferencia es que un Campo es simplemente la declaración de una variable dentro de una Clase o Estructura, y Propiedad es un híbrido entre Campo y Método, ya que este se comporta como un Campo desde fuera de la clase pero en realidad trabaja como un par de Métodos Get y Set, automáticamente se llama al Método Get cuando se lee, y se llama al Método Set cuando se escribe.

Ej.: Campo:

Código
  1. class Usuario {
  2.  public int usu_Id;
  3. }

Ej.: Propiedad (automática):

Código
  1. class Usuario {
  2.  public int Usu_Id {get; set;}
  3. }

Ej.: Propiedad (normal):

Código
  1. class Usuario {
  2.  private int usu_Id;
  3.  
  4.  public int Usu_Id {
  5.    get { return usu_Id; }
  6.    set { usu_Id = value; }
  7. }

- Como siempre se dice, la ventaja de las Propiedades sobre los Campos es que una Propiedad permite filtrar o sanitizar la entrada o salida de la variable gracias a los Métodos Get y Set que actúan como intermediarios.

- Por último, con respecto a los atajos para crear un Constructor, Propiedades, etc, se hacen dando un click derecho > insertar fragmento de código, ahí puedes ver una lista de varios fragmentos de código y también su Snipped o atajo, por ejemplo para:

-- Constructor: ctr
-- Propiedad: prop
-- Clase: class
-- For: for
-- etc, etc, etc

- Los Snipped son muy útiles en el IDE, ya que ahorran tiempo al escribir código, basta con escribir el snipped y dar dos veces Tab.

- El Constructor sirve para "hacer cosas" cuando se Instancia una Clase (se crea un Objeto nuevo), lo normal es inicializar valores para los Campos ya sea directamente o mediante Propiedades. Si ves que hay varios Constructores, uno sin parámetros y otros con parámetros es una funcionalidad más de C#, la Sobrecarga de Constructores, el propio lenguaje se encargará de utilizar el Constructor adecuando de acuerdo a los parámetros dados.

Ej.: Constructor vacio:

Código
  1. class Usuario {
  2.  private int usu_Id;
  3.  
  4.  public int Usu_Id {
  5.    get { return usu_Id; }
  6.    set { usu_Id = value; }
  7.  
  8.  public Usuario(){}
  9. }

Ej.: Constructor normal:

Código
  1. class Usuario {
  2.  private int usu_Id;
  3.  
  4.  public int Usu_Id {
  5.    get { return usu_Id; }
  6.    set { usu_Id = value; }
  7.  
  8.  public Usuario(int id) {
  9.    Usu_Id = id;
  10.  }
  11. }

Ej.: Constructor sobrecargado:

Código
  1. class Usuario {
  2.  private int usu_Id;
  3.  
  4.  public int Usu_Id {
  5.    get { return usu_Id; }
  6.    set { usu_Id = value; }
  7.  
  8.  public Usuario(){}
  9.  
  10.  public Usuario(int id) {
  11.    Usu_Id = id;
  12.  }
  13. }
En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 683



Ver Perfil WWW
Re: pregunta sobre la plataforma de desarrollo de .NET
« Respuesta #4 en: 18 Abril 2020, 22:28 pm »

- Tampoco entiendo porque le llaman calabaza a los zapallos XD, en mi país las calabazas son muy diferentes.





Nel , eso para mi es una calabaza verde deforme. nada de zapallo.  :silbar:



PD: Exelente Explicacion. Ya con eso, yo creo que aprende.  ;-)
« Última modificación: 18 Abril 2020, 22:32 pm por **Aincrad** » En línea



Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: pregunta sobre la plataforma de desarrollo de .NET
« Respuesta #5 en: 19 Abril 2020, 16:01 pm »

Ya entendí  ;-)
En línea

7w7
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines