Secuencia Caracter Definicion
\0 NUL Caracter Nulo
\n CR + LF Ir al principio de la Linea Siguiente
\t HT Tabulador Horizontal
\b BS Retroceso (Backspaces)
\r CR Retorno de Carro sin avanze de linea
\f FF Alimentacion de pagina (Solo para impresora)
\' ' Comilla Simple
\'' '' Comilla Doble
\\ \ Barra Invertida(backslash)
\0dd Caracter ASCII. Representacion Octal
\xdd Caracter ASCII. Representacion Hexadecimal
\udddd Caracter UNICODE. Representacion Hexadec.
\a BEL Alerta, pitido(\u0007)
\u VT Tabulador Vertical(\u0008)
TIPOS
Los tipos en C# se clasifican en tipos : Valor y Refencia. Una variablke de tipo valor alamcena directamente un valor (dato en general) mientras que una variable de un tipo referencia lo que permite almacenar es una referencia a un objeto(posicion de memoria donde esta el objeto)
int suma = o; //Suma almacena un enetero
CCuenta cta = null // cta permitira alamcenar una referencia a un objeto CCuenta
Tanto las clases como las matrices, intrefaces y delegados son tipos refrencia.
En cuanto a los tipos valor se clasifican en las siguientes 3 formas : los tipos primitivos , las estrucutras y los tipos enmuerados
Los tipos primitivos se clasifican en tipo enteros, tipos reales y tipo bool.
Lista de tipos primitivos
La siguiente lista contiene los tipos (primitivos):
Tipo en C# | Tipo de .NET Framework | CLS-Compliant | Descripción | Valor por defecto |
---|---|---|---|---|
object | System.Object | Si | Tipo base para todos los otros tipos | N/A |
bool | System.Boolean | Si | 1 bit; representa true (verdadero) o false (falso) | false |
Enteros | ||||
byte | System.Byte | Si | 8 bit; entero sin signo | 0 |
sbyte | System.SByte | No | 8 bit; entero con signo | 0 |
short | System.Int16 | Si | 16 bit; entero con signo | 0 |
ushort | System.UInt16 | No | 16 bit; entero sin signo | 0 |
int | System.Int32 | Si | 32 bit; entero con signo | 0 |
uint | System.UInt32 | No | 32 bit; entero sin signo | 0 |
long | System.Int64 | Si | 64 bit; entero con signo | 0L |
ulong | System.UInt64 | No | 64 bit; entero sin signo | 0 |
Decimales | ||||
float | System.Single | Si | 32 bit; IEEE valor decimal | 0.0F |
double | System.Double | Si | 64 bit; IEEE valor decimal | 0.0D |
decimal | System.Decimal | Si | 128 bit valor decimal (1 bit signo; 96 bit valor; 8 bit exponente; 23 bit sin uso) | 0.0M |
Caracteres | ||||
char | System.Char | Si | 16 bit Caracter Unicode | \0 |
string | System.String | Si | Matriz de caracteres | N/A* |
Literal NULL 0 Tipos anulables
Un Tipo anulable puede representar todos los valores de determinado tipo más la capacidad de poder contener un valor
null
. Es una nueva característica en C# 2.0. Es una instancia de la estructura System.Nullable
. Sólo pueden ser usados con los tipos por valor, ya que los tipos por referencia soportan el valor nulo. La razón para usar Tipos anulables es para superar el problema de no estar apto para determnar fácilmente si un tipo por valor está vacío o indefinido. Diferente que a los tipos por referencia (que se les puede asignar el valor null
) null
no es asignable a tipos por valor primitivos.
NOTA: Los tipos bool
anulables, en una sentencia if
, while
, for
, o alguna otra sentencia lógica o de iteraciones, será equivalente null
a false
; no lanzará un error.
Por ejemplo, el siguiente código puede causar un error en tiempo de compilación:
int varA = null;
// Error: no se puede convertir en nulo
// 'int' porque es un tipo por valor que no es anulable
Usar Tipos anulables como una solución consistente para determinar si un tipo por valor está vacío o indefinido.
Se pueden declarar Tipos anulables de las siguientes dos formas:
System.Nullablevariable; // 1era manera
T? variableName; // 2nda manera
Donde T es el tipo del Tipo anulable. T puede ser cualquier tipo por valor incluyendo struct
; pero, este no puede ser un tipo por referencia. Por ejemplo:
int? i = 10;
double? d1 = 3.14;
bool? bandera = null;
char? letra = 'a';
int?[] arr = new int?[10];
Miembros de los tipos anulables
Miembors fundamentales:
Propiedades | |
---|---|
HasValue | Pública de sólo lectura. El tipo es bool . True si la variable no contiene un valor nulo. |
Value | Pública de sólo lectura. El tipo es el tipo indicado. Si HasValue es true , entonces Value contiene un valor significante. Si HasValue es false , accediendo a Value lanzará una InvalidOperationException . |
Métodos | |
GetValueOrDefault | Devuelve el valor del objeto o el valor predeterminado (en el caso de que el valor sea null ) del objeto o del especificado en el parámetro opcional T. |
Para probar los tipos anulables:
int? x = 10;
if (x.HasValue)
{ System.Console.WriteLine (x.Value); }
else
{ System.Console.WriteLine ("Indefinido"); }
// -o-
if (x != null)
{ System.Console.WriteLine (x.Value); }
else
{ System.Console.WriteLine ("Indefinido"); }
int? NumeroN = null;
int Numero = NumeroN.GetValueOrDefault(); // El valor predeterminado es 0
NumeroN = 146;
Numero = NumeroN.GetValueOrDefault(); // El valor es 146
Uso
La necesidad de este planteo sirve para interactuar con bases de datos SQL, las cuales sus celdas pueden contener también un valor null
.
Si querés especificar tu propio valor predeterminado, puedes usar el operador ??. El operador ?? devolverá el valor de la declaración de la izquierda si este no es nulo y si lo es devolverá el valor dado del lado derecho del ??.
int? NumeroN = null;
int Numero = NumeroN ?? -1; // Numero es -1
NumeroN = 146;
Numero = NumeroN ?? -1; // Numero es 146
Otra posibilidad para obtener el valor es usar la propiedad Value
. Esta propiedad lanzará una excepción System.InvalidOperationException
si el valor es null
. Para evitar esta excepción, puedes, también, usar la propiedad HasValue
que devuelve un valor bool
para comprobar si el valor es nulo o no. Si el valor de retorno de HasValue
es false
, entonces el valor de la variable es null
.
Good article Thank you so much