C# (CSHARP)
//
Comentarios de una linea
/* ... /*
Comentarios multilinea
Array
Dictionary
List
Archivos System.IO.File
OPERADORES
- Aritmeticos
+
Suma
-
Resta
*
Multiplicacion
/
Division
%
Modulo, lo que sobra de la division entera
++
Incremento
--
Decremento
int i = 3;
Console.WriteLine(i); // output: 3
Console.WriteLine(i++); // output: 3
Console.WriteLine(i); // output: 4
double a = 1.5;
Console.WriteLine(a); // output: 1.5
Console.WriteLine(++a); // output: 2.5
Console.WriteLine(a); // output: 2.5
- Comparacion
==
igual valor
!=
no igual
>
mayor que
<
menor que
<=
mayor o igual que
>=
menor o igual que
- Logicos
&&
AND
||
OR
!
NOT
- Preferencia
1) -
unario minus, aplicar el menos a los numeros negativos
2) *
multiplicacion
3) /
division
4) +
suma
5) -
resta
VARIABLES
- Declaracion
// tipo nombreVariable
string nombre, otroNombre;
int cantidad;
string hi = Console.ReadLine();
// constantes, hay que asignarles valor al declararlas
const int miNumero = 7;
miNumero = 10; // error
- Using declaracion una declaracion de variable precedida por
using
avisa al compilador de que debe liberarla al final del bloque que incluye la declaracion
using var myRes = new MyResource();
myRes.DoSomething();
- Var
Usando var el tipo de variable lo elige el compilador segun el valor que asignamos a la variable
var name = "Pedro";
var age = 18;
Console.WriteLine(name.GetType()); // System.String
Console.WriteLine(age.GetType()); // System.Int32
Tipos Por Valor
Contienen el valor de variable.
- Enteros
tipo | tamaño | rango |
---|---|---|
sbyte | 8 bits | -128 a 127 |
byte | 8 bits | 0 a 255 |
short | 16 bits | -32.768 a 32.767 |
ushort | 16 bits | 0 a 65.535 |
int | 32 bits | -2.147.483.648 a 2.147.483.647 |
uint | 32 bits | 0 a 4.294.967.295 |
long | 64 bits | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |
ulong | 64 bits | 0 a 18.446.744.073.709.551.615 |
- Reales
tipo | tamaño | precision | rango |
---|---|---|---|
float | 32 bits | 7 digitos | 1,5E-45 to 3,4E48 |
double | 64 bit | 15 digitos | 5,0E-324 to 1,7E308 |
decimal | 128 bit | 28-29 digitos | 5,0E-324 to 1,7E308 |
- Booleanos
tipo | tamaño | rango |
---|---|---|
bool | true o false | |
- Char
tipo | tamaño | rango |
---|---|---|
char | 16 bits | 0 a 65.535 |
// se declara usando comillas simples
char caracter = 'a';
Tipos Por Referencia
No contienen el valor sino la direccion de memoria donde esta el valor de la variable
- Object
Convertir un tipo por valor a objecto se llama boxing
Convertir un objeto a un tipo de valor es unboxing
object obj;
obj = "Hola"; // boxing
- Dynamic
La comprobacion del tipo de valor de estas variables se hace en ejecucion en lugar de durante la compilacion
dynamic <nombreVariable> = valor;
- String
Para escapar caracteres usamos \ \n
nueva linea por ejemplo
Se declaran usando comillas dobles
String str = "Una cadena de texto";
Incluir parametros en cadenaa
// String.Format
String.Format("Hola {0}.", name);
// o interpolacion de cadenas
$"Hola{name}.";
Si usamos la @ antes de la cadena significa que interprete la cadena literalmente (sin escapar caracteres), util para rutas de archivos o webs
String rutaAlArchivo = @"/home/usuario/loQueSea/miArchivo.txt";
// Cadena a entero
if (miCadena.IsInt()) {
miEntero=miCadena.AsInt();
}
// Cadena a real
if (miCadena.IsFloat()) {
miReal=miCadena.AsFloat();
}
// Cadena a decimal
if (miCadena.IsDecimal()) {
miDecimal=miCadena.AsDecimal();
}
// Cadena a Tipo Fecha
miCadena="10/10/2012";
if (miCadena.isDateTime() {
miFecha=miCadena.AsDateTime();
}
// Cadena a Booleano
miCadena="True";
if (miCadena.IsBool()) {
myBool=miCadena.AsBool();
}
// Cualquier dato a cadena
miEntero=1234;
miCadena=miEntero.ToString();
Conversion de tipos
- Implicita
Se hacen automaticamente convertiendo un tipo pequeño a uno mayor o una clase derivada a una clase base
char -> int -> long -> float -> double
int miEntero = 9;
double miReal = miEntero;
`//` Comentarios de una linea
`/* ... /*` Comentarios multilinea
Console.WriteLine(miEntero); // 9
Console.WriteLine(miReal); // 9
- Explicita
Se hace manualmente
1) Colocando el tipo deseado en parentesis delante del valor a convertir
double miReal = 1.11;
int miEntero = (int) miReal;
Console.WriteLine(myReal); // 1.11
Console.WriteLine(myEntero); // 1
2) Usando metodos integrados como Convert
s
int miEntero = 10;
double miReal = 5.25;
bool miBooleano = true;
Console.WriteLine(Convert.ToString(miEntero)); // 10
Console.WriteLine(Convert.ToDouble(miEntero)); // 10
Console.WriteLine(Convert.ToInt32(miReal)); // 5
Console.WriteLine(Convert.ToString(miBooleano)); // True
ESTRUCTURAS DE CONTROL
if
if (condicion1) {
esto se ejecuta si la condicion1 es true
} else if (condicion2) {
esto se ejecuta si condicion1 es false y condicion2 es true
} else {
esto se ejecuta si condicion1 es false y condicion2 es false
}
- Ternario
condición ? true : false
int edad = 18;
string mayorEdad = edad >= 18 ? "Eres mayor" : "Eres menor";
Console.WriteLine(mayorEdad);
for
inicializacion
- Se ejecuta antes que el bucle empiece
condicion
- Define la condicion para seguir ejecutando el bucle
actualizacion
- Se ejecuta cada vez que el bucle se ha ejecutado
for (inicializacion; condicion; actualizacion) {
codigo_se_ejecuta_con_cada_bucle;
}
for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
}
foreach
Es como el for
pero para iterar sobre elementos en un array
foreach (type nombreVariable in nombreArray) {
codigo_se_ejecuta_con_cada_bucle;
}
string[] coches = {"Peugeot", "Opel", "Seat", "Mercedes"};
foreach (string i in coches) {
Console.WriteLine(i);
}
while
while
El codigo puede que no se ejecute nunca
while (condicion) {
instrucciones_while_condicion_es_true;
}
do while
El codigo se ejecuta minimo una vez
do {
instrucciones_while_condicion_es_true
} while (condicion)
switch
switch(expresion) {
case x:
// codigo
break;
case y:
// codigo
break;
default:
// codigo por defecto
break;
}
ARRAYS
- Creacion de Arrays
Una vez creado no se puede modificar el tamaño.
Buenos para parametros o cosas fijas como nombres de los 12 meses
Array Literal
string[] coches;
string[] coches = {"Peugeot", "Opel", "Seat", "Mercedes"};
int[] numeros = {10, 20, 30, 40, 50};
Array Constructor
// Crear array de 4 elementos y poner los valores luego
string[] coches= new string[4];
// Crear array de 4 elementos y añadir los valores a la vez
string[] coches= new string[4] {"Peugeot", "Opel", "Seat", "Mercedes"};
// Crear array de 4 elementos sin especificar el tamaño
string[] coches= new string[] {"Peugeot", "Opel", "Seat", "Mercedes"};
// Crear array de 4 elementos sin new ni especificar el tamaño
string[] coches= {"Peugeot", "Opel", "Seat", "Mercedes"};
// Si declaras un array y lo inicializas despues tendras que usar new
string[] coches;
coches= {"Peugeot", "Opel", "Seat", "Mercedes"}; // ERROR
coches= new string[] {"Peugeot", "Opel", "Seat", "Mercedes"};
- Propiedades
array.Length
- nos ds el numero total de elementos del array
string[] misLetras = { "a", "z", "c" };
Console.WriteLine(misLetras.Length) // 3
array.Rank
- nos da el rango(numero de dimensiones) del array
- Metodos
array.Sort(nombreArray)
- ordena el array alfabeticamente o en orden ascendente de menor a mayor
string[] coches = {"Seat", "Audi", "Ford", "Renault"};
Array.Sort(coches);
foreach (string i in coches) {
Console.WriteLine(i);
}
int[] misNumeros = {50, 30, 1, 8, 9};
Array.Sort(misNumeros);
foreach (int i in misNumeros) {
Console.WriteLine(i);
}
array.Reverse(nombreArray)
- invierte todos los elementos del array
string[] misNumeros = { "a", "z", "c" };
Array.Reverse(misNumeros);
Console.WriteLine(misNumeros[0]); // c
array.Max-Min-Sum()
- calcula el valor minimo, maximo ,la suma de todos los elementos del array
using System.Linq;
int[] misNumeros = {50, 30, 1, 8, 9};
Array.Sort(misNumeros);
Console.WriteLine(misNumeros.Max()); // 50
Console.WriteLine(misNumeros.Min()); // 1
Console.WriteLine(misNumeros.Sum()); // 98
array.IndexOf("elemento")
- Busca el elemento en el array y devuelve su posicion o -1 si no lo encuentra
string[] misNumeros = { "a", "z", "c" };
Console.WriteLine(Array.IndexOf(misNumeros, "z")); // 1
- Iterar
DICTIONARY
Pares clave_unica-valor
- Crear un Dictionaty
using System.Collections.Generic;
Dictionary<string, int> usuarios = new Dictionary<string, int>();
Dictionary<string, int> usuarios = new Dictionary<string, int>() {
{ "Fulano", 57 },
{ "Mengano", 33 },
{ "Zutana", 18 },
{ "Manoli", 32 }
};
- Propiedades
diccionario.Count
- devuelve el numero total de elementos que existen
diccionario.keys
- devuelve una coleccion con todas las claves del dictionary
diccionario.Values
- devuelve una coleccion con todos los valores del dictionary
diccionario[clave]
- devuelve el valor asociado a la clave especificada
- Metodos
diccionario.Add(clave, valor)
- añade un par clave-valor al dictionary
diccionario.Remove(clave)
- elimina el valor con clave especificada
diccionario.ContainsKey(clave)
- determina si la clave existe
diccionario.ContainsValue(valor)
- determina si el valor existe
diccionario.Clear()
- resetea el dictionary
diccionario.()
-
diccionario.()
-
- Iterar
foreach (string key in usuarios.Keys) {
Console.WriteLine(key + " : " + usuarios[key]);
}
LISTS
Los elementos estan en un orden especifico.
- Crear una List
using System.Collections.Generic;
List<string> nombres = new List<string>();
List<string> nombres = new List<string>() {
"Manolo",
"Sonia",
"Eva"
};
- Propiedades
lista.Count
- numero de elementos que contiene
lista.Capacity
- maxima capacidad actual
lista[int32]
- devuelve el elemento en el indice int32
- Metodos
lista.Add(T item)
- Agrega un item al final de la Lista
lista.Insert(int index, T item)
- inserta T en el indice index de la Lista
lista.Clear()
- vacia toda la Lista
lista.Contains(T item)
- devuelve booleano si el elemento esta en la Lista
lista.Exists(Predicate<T> match)
- determina si la Lista contiene elementos que cumplen true con el predicado
lista.Find(Predicate<T> match)
- devuelve el primer elemento que cumple la condicion del predicado
lista.FindAll(Predicate<T> match)
- devuelve todos los elementos que cumplen la condicion del predicado
lista.FindIndex(Predicate<T> match)
- devuelve el indice del elemento que cumple la condicion o -1 si nadie la cumple
lista.FindLast(Predicate<T> match)
- devuelve el indice del ultimo elemento que cumple la condicion
lista.FindLastIndex(Predicate<T> match)
- devuelve el indice del ultimo elemento que cumple la condicion
lista.ForEach(el => Console.WriteLine(el))
- itera sobre la Lista
lista.IndexOf(T item)
- devuelve el indice del primer elemento que coincide con T
lista.Insert(int index, T item)
- inserta T en el indice index
lista.LastIndexOf(I item)
- devuelve el ultimo indice del elemento que coincide con T
lista.Remove(T item)
- elimina el elemento de valor T
lista.RemoveAt(int index)
- elimina el elemento en el indice int
lista.Reverse()
- Da la vuelta a todos los elementos
lista.Sort(Comparison<T>)
- Ordena los elementos segun el criterio o por defecto
lista.TrueForAll(Predicate<T> match)
- una condicion que todos cumplen y devuelve true (ejemplo predicado el => el%2 == 0)
- Iterar
foreach (string el in usuarios) {
Console.WriteLine(el);
}
usuarios.ForEach(el => Console.WriteLine(el));
FILES
Para trabajar con archivos usamos la clase File
del namespace System.IO
using System.IO;
File.AppendText(String)
- añade el texto al archivo si existe o a uno nuevo si no existe
File.Copy(String, String)
- copia archivo existente a uno nuevo. No se puede sobreescribir
File.Copy(String, String, Boolean)
- copia archivo existente a uno nuevo. Se puede sobreescribir
File.Create(String)
- crea archivo nuevo sobreescribiendo incluso
File.Delete(String)
- Elimina el archivo
File.Exists(String)
- Determina si el archivo especificado existe
File.ReadAllLines(String)
- Abre el archivo, lee todas las lienas y lo cierra
File.ReadAllText(String)
- Abre el archivo, lo lee todo y lo cierra
File.Replace(string source, string dest, string Backup)
- Reemplaza el contenido del archivo especificado por el de otro archivo borrando el original y creando un backup del reemplazado
File.WriteAllText()
- Crea un nuevo archivo sobrreescribiendo si es preciso, escribe el contenido en el y cierra el archivo