using System;
class Program {
static void Main () {
const int n = 42;
Console.Write ("Adivina en que número estoy pensando ? ");
int v = Int32.Parse(Console.ReadLine ());
if (v < 0) {
Console.WriteLine ("Solo Números postitivos");
return;
}
if (v == n) Console.WriteLine ("Bien Hecho!!!");
else {
Console.WriteLine ("El número es " + ((v < n) ? "MAYOR" : "MENOR"));
Console.Write ("Pista : ");
int h = (v > n) ? v - n : n - v;
if (h < 5) Console.WriteLine (" TE QUEMAS!");
else if (h < 10) Console.WriteLine (" CALIENTE");
else if (h < 15) Console.WriteLine (" TEMPLADO");
else Console.WriteLine (" FRIO");
}
}
}C# no nos va a sorprender en ámbito de las expresiones condicionales.
Como era de esperar, nos ofrece, más o menos, las mismas posibilidades
que Java y un modelo basado en el introducido por el lenguaje C,
incluyendo el operador ternario ?: y bloques
if-else sin utilizar la palabra clave
then.
SABÍAS QUE
C# se parece muchísimo a Java, pero esta lleno de pequeñas diferencias tontas, quizás para dar la impresión de que los lenguajes no se parezcan tanto. Una de estas diferencias tiene que ver con la forma estándar para nombrar los métodos. Java sigue el estilo de C++ en el que se utilizan mayúsculas camello (Camel Case), para los nombre, pero la primera letra es mayúscula para las clases y minúscula para los métodos. C# utiliza letra mayúscula también para los métodos… lo que hace que resulte incómodo cambiar de lenguaje, una vez que te acostumbras a cada uno de los formatos de los identificadores.
C# ofrece una instrucción switch con la misma sintaxis
que C, pero con algunas extensiones como permitir definir casos con
diferentes tipos. Además ofrece una clausura when con la
que añadir condiciones adicionales sobre los casos. Esto es
especialmente útil para código que trabaja con colecciones heterogéneas
(por ejemplo arrays de objetos de distintos tipos).
El siguiente código muestra un ejemplo clásico de este uso.
Shape sh = new Circle (10);
switch (sh) {
case null:
Console.WriteLine ("Objeto no inicializado");
break;
case Shape shape when sh.Area == 0:
Console.WriteLine ("Forma mal definida");
break;
case Circle c when c.radious == 1:
Console.WriteLine ("Circulo Unidad....");
break;
default:
Console.WriteLine ("Ninguno de los anteriores");
break;
}Al momento de escribir este texto, C# no soporta el uso de
switch o if como una expresión, si bien parece
que se considera como una propuesta para futuras versiones. De la misma
forma el uso de expresiones o patrones relacionales en los casos de
switch también es posible que lo veamos muy pronto. Quizás
cuando estés leyendo esto ya se hayan integrado estas mejoras.
C# ofrece tipos booleanos (tipo bool) que pueden tomar
valores true y false los cuales no pueden ser
convertidos de forma automática en otros tipos como sucede en C o C++.
El equivalente a esa conversión, la que realiza C/C++, basada en el
convenio de que el valor 0 es false y cualquier otro valor
es true, se puede simular en C@ con una comparación con el
valor 0.
C# también soporta la declaración de constantes usando la palabra
clave const de forma similar a otros lenguajes, si bien,
esta construcción solo se puede utilizar con tipos básicos. De nuevo, es
muy probable que veamos en futuras versiones del lenguaje el soporte
para la declaración de constantes usando tipos complejos, pero al
momento de escribir este texto, todavía no es posible.
Resumen
- Soporta
if ... [else if] ...[else] ... - No ofrece forma reducida para
if - Soporta operador terciario
cond ? val1 : val2 - Soporta booleanos:
bool(ofrece la claseBoolean) - Soporta
switchmejorado con soporte para usar tipos y añadir condiciones adicionales conwhen - Soporta constantes nativamente
(
const Tipo CONSTANTE = val) solo con tipos básicos.readonlyse puede utilizar con tipos complejos (clases, estructuras o vectores).
■
