Ocho cosas que no sabías que tiene C#


java vs csharp

Ocho cosas que no sabías que tiene C#. Muchas personas utilizan como primer lenguaje de programación el lenguaje Java, y este, aunque es realmente parecido a C# difiere en varias cosas con él. Estas ocho cosas, que aunque simples, harán que te replantes cambiar de lenguaje de programación. Hoy presentamos ochos cosas puedes hacer en C# y que quizás en Java te cuesten un poquito más de hacer.

Con C Sharp di adiós a los getters y setters

Si con Java aprendimos a que los atributos de nuestra querida clase debían de ser siempre privados y con sus correspondientes getters y setters, con C# debemos decirles adiós. ¿Por qué? Pues muy sencillo: C# incorpora el azúcar sintáctico, y esto hace que nuestro código quede mucho más legible a la hora de escribirlo y leerlo. En Java podíamos definir una clase Persona con un atributo nombre como:

public class Persona {
private String nombre;
public void setNombre(String nombre){
    this.nombre = nombre;
    }
    public String getNombre(){
        return nombre;
    }
}

En C# tenemos las queridas propiedades, una facultad que tiene el lenguaje para ahorrarnos tener que declarar los setters y getters:

public class Persona {
  public String nombre {get; set;}
}

Y sí, a la hora de acceder a los miembros de acceder a los miembros de la clase lo haremos de una forma más rápida y sin incumplir nada, el lenguaje C# se ocupa de realizar la transformación de forma transparente para el programador.

¿Sabías que en C# puedes poner String o string?

Sí, ambas formas son posibles podremos declara las propiedades o atributos de nuestra clase como queramos, a C# le da igual lo que escribamos, ambas formas nos sirven para expresar lo mismo. Nuestra clase Persona podría quedar como:

public class Persona {
public String nombre {get; set;}
}

O bien como:

public class Persona {
public string nombre {get; set;}
}

Podremos realizar las mismas operaciones, esta es la magia del autoboxing de verdad. El autoboxing se puede definir como la facultad que tiene un lenguaje para convertir un tipo primitivo (int, double …) en un tipo envoltorio (Integer, Double…).

Ya no tenemos paquetes, tenemos agrupaciones

Aunque con Java aprendimos a colocar nuestras clases en los paquetes de forma que si alguna se movía toda la aplicación podría dejar de funcionar con C# tendremos que olvidar nuestros queridos paquetes debido a que tenemos las agrupaciones. Estas agrupaciones pueden ser de dos tipos:

  • Agrupación lógica: son los llamados namespace.
  • Agrupación física: serán los proyectos (estarán en el mismo dll o exe)

Oculta tu información con un internal

Si en Java disponíamos de tres niveles de ocultación (uno más si contamos la protección por defecto o de paquete) en C# disponemos de dos más:

  • Internal: Accesible desde cualquier clase del ensamblado.
  • Protected internal: Accesible desde cualquier clase del ensamblado o desde sus derivadas (aunque no pertenezcan al ensamblado).

También tenemos que darnos cuenta que en Java la protección por defecto es de paquete mientras que en C# es internal.

En C# di hola al destructor

Un destructor es un método que los programadores tenemos para liberar un objeto de la memoria. Pero tenemos unas diferencias entre los distintos lenguajes:

  • C#: Se asegura su ejecución pero no de un modo determinista (no sabemos exactamente cuándo se ejecutará). Al menos sabemos que se ejecutará cuando termine el programa.
  • Java (finalize): No se asegura su ejecución (no determinista). Incluso aunque termines el programa, Oracle no nos asegura que los objetos instanciados se liberen…
  • C++: Se asegura su ejecución pero de un modo determinista. Tenemos que ser nosotros cuando decirle que acabe.

Por tanto, en C# podemos asegurarnos que nuestro destructor se ejecutará cuando terminemos la ejecución de nuestro programa, no cuando le apetezca al recolector de basura.

Con C# primero van las mayúsculas

A diferencia que en Java, en C#, una de sus muchas guías de estilo, indican que los miembros públicos de una clase deben ir con mayúscula y los privados minúscula anteponiendo un guión bajo.

public class Persona{
public string Nombre {get; set;}
private in _edad;

public String ImprimirAntenas(){ … }
}

Alguien se acuerda del famoso System.out.print

En C# nadie le echará en falta pues tenemos una instrucción similar, Console.WriteLine o Console.Write. Veamos un ejemplo:

public class Persona{
public string Nombre {get; set;}
private in _edad;

public String ImprimirNombre(){
        Console.WriteLine(Nombre);
    }
}

Los parámetros opcionales

Sin duda junto a las propiedades esta fue una de las cosas que más me gustaron de este lenguaje, y es queC# te permite indicar en los métodos o constructores los parámetros que queramos poner por defecto, es decir, al realizar una llamada a dicho método no tengamos que indicar un valor para un parámetro que sea opcional. Por ejemplo, pensemos en un método que nos permite crear personas, pero que si no le indicamos nada nos creará 100 personas.

public static Persona[] CreaPersonas (int n = 100)
{
    string[] names = { "María", "Juan", "Pepe", "Luis", "Carlos", "Miguel", "Cristina" };

Persona[] listing = new Persona[n];
Random random = new Random ();
for (int i = 0; i < n; i++)
    listing [i] = new Persona {
        Nombre= names [random.Next (0, names.Length)],
    };
return listing;
}

Via: Rootear

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s