René Pacios

/* Overflow My Brain & More */

Inicialización de propiedades auto-implementadas con C#

roslyn[1]Lo confieso, hasta hace muy poco  utilizaba VB.NET para mis desarrollos como lenguaje principal, nunca me ha supuesto un problema para utilizar C# como VB.NET indistintamente, pero cuando empezaba un proyecto personal o alguna cosilla puntual elegía VB, no se si por trabajar con un porcentaje elevado de proyectos .NET en este lenguaje durante mi trayectoria profesional, por herencia de Visual Basic 6 pues la adopción de la plataforma .NET la sufrí en  sin usar ; y diferenciando herencias de clases de implementaciones de interfaces a simple vista, o simplemente por cabezonería, pero el ratón siempre me tiraba a ese lenguaje al hacer new project  en Visual Studio.

La cosa está cambiando, desde hace un algún tiempo estoy optando por utilizar C# como lenguaje principal, simplemente por tendencia, hace ya tiempo que VB.NET no es el lenguaje más utilizado de la plataforma de todos los lenguajes disponibles http://www.sergiosainz.com/listado-de-lenguajes-para-net-framework/ .

Entre las diferentes plataformas y lenguajes de desarrollo es muy común echar en falta ciertas características, y adoptar otra con alegría, sin embargo entre los lenguajes de .net independientemente de la sintaxis, también existen ciertas diferencias (cada vez menores por suerte para nosotros) , como el uso de parámetros opcionales que no se añadió hasta la versión 4 C# (VS 2010) y nos obligaba a implementar sobrecargas de métodos para reproducir un comportamiento similar o las propiedades auto-implementadas o la inicialización de listas que se añadió en la versión 10 de Visual Basic (2010)

Entre estas diferencias, una de las características que sigo echando de menos en C#, que por suerte estará disponible en la siguiente versión entre otras novedades, es la asignación de un valor inicial a las propiedades auto-implementadas. Desde que apareció esta característica hemos ahorrado bastantes líneas de código en nuestras clases obviando los repetitivos get/set.

 Public Property Nombre As String = "Pepe"

Private _Apellido1 As String ="Gotera" Public Property Apellido1() As string Get Return _Apellido1 End Get Set(value As String) _Apellido1=value End Set End Property

En este ejemplo se están creando un par de propiedades Nombre y Apellido1 con un valor inicial, aunque es un ejemplo sencillo y no parece mucha la diferencia, imaginad una clase real con unas 15-20 propiedades. Si nos vamos a C# debemos utilizar la segunda forma de definición de una propiedad si queremos dar un valor por defecto. Otra opción bastante elegante podría ser usar la forma simplificada de definición de propiedades y asignar el valor inicial en el constructor de la clase.

 

class MyClass
{
        public string Nombre { get; set; }

        private string _apellido1 = "Gotera";
        public string Apellido1
        {
            get
            {
                return _apellido1;
            }
            set
            {
                _apellido1 = value;
            }
        }

        public MyClass()
        {
            Nombre = "Pepe";
        }

 }

C# 6 al poder

Con la reciente aparición de roslyn la cosa está cambiando, Microsoft ha dado una nueva vuelta de tuerca liberando este compilador limando más asperezas entre ambos lenguajes y habrá que ver en que queda la versión final del reciente Visual Studio "14" CTP pero algo que si han confirmado entre las novedades es el soporte a valores iniciales en propiedades auto-implementadas en C# de modo que podremos hacer cosas como esta:

public int Nombre { get; set; } = "Pepe"; 

//propiedad de solo lectura con valor inicial
public int Apellido1 { get; } = "Gotera";

 

Seguiremos viendo las nuevas características anunciadas se quedan en la versión final  y como van evolucionando.

Bonus-Track: Ambos lenguajes de la plataforma me parecen igual de potentes, simplemente son el camino a construir el producto final, y la calidad de este no dependerá de lo que conozcas un lenguaje y otra, dependerá del conocimiento de la plataforma .NET.

 

Nos leemos

Acerca de René

René Pacios es un apasionado de la tecnología, autodidacta, emprendedor, le encanta el desarrollo web, para moviles, aplicaciones, todo aquello que automatice tareas y haga que las máquinas trabajen para él. Es un gran fan de las tecnologías Microsoft, y le encanta estar a la última siempre que el tiempo se lo permite. Siempre quiso ser cantante, pero creo que en esta vida se va a quedar sólo en canta-mañanas

               

Agregar comentario

Loading