EL LENGUAJE DE
PROGRAMACIÓN C#
OBJETIVOS
Conocer las características del lenguaje de programación C#
Aprender a programar utilizando C#
Aprender a documentar código en C#
CONTENIDO
Introducción Estructuras (struct)
Compilador C# Enumeraciones (enum)
Namespaces Interfaces
Sistema de tipos unificado Modificadores de acceso
Tipos predefinidos Excepciones
Operadores Sentencia using
Entrada / Salida por Consola Generics
Sentencias Anexo I. Documentación XML
Clases en .NET
INTRODUCCIÓN
C# es un lenguage OO usado para desarrollar aplicaciones en la plataforma .NET
Diseñado por Microsoft para combinar la potencia de C/C++, Java y la productividad de
Visual Basic
El objetivo de C# (y de la plataforma .NET) es reducir el tiempo de desarrollo
Permitiendo a los desarrolladores invertir su tiempo trabajando en la lógica de negocio en
lugar de detalles de programación de bajo nivel
En C# todo es un objeto
Todo hereda de System.Object
Es posible declarar un tipo primitivo (long) y trabajar con él de forma eficiente. Además,
es posible asignarlo a un objeto y entonces será tratado como tal
Incluye mecanismos transparentes de boxing y unboxing (se ilustra más adelante)
Los tipos primitivos sólo se tratan como objetos cuando la situación lo requiere, mientras
tanto pueden aplicárseles optimizaciones específicas
HOLA MUNDO
1. using System;
2. namespace Es.Udc.DotNet.CSharpTutorial
3. {
4. /* * Class HellowWorld * Description: simple C# example. */
5. class HelloWorld {
6. #region Test code. Uncomment for testing
7. /* entry point */
8. public static void Main() {
9. Console.WriteLine("Hello World!");
10. Console.ReadLine();
11. }
12. #endregion
13. }
14. }
HOLA MUNDO
La línea "using System;" significa que accederemos a miembros del namespace System
Static es un modificador que indica que se trata de un método de clase
Main() es lo que es denomina el punto de entrada de la aplicación
Necesita del modificador static para evitar que para llamarlo haya que crear algún objeto de la clase donde se haya
definido.
Si necesita recibir parámetros:
public static void Main(string args[])
C# es sensible a las mayúsculas
Los métodos y nombres de clases siguen sitáxis PascalCase (e.g.,FindByUserIdentifier(…))
Los atributos siguen sitáxis camelCase (e.g., firstName)
INTRODUCCIÓN
Sólo se admite herencia simple
Se admite implementación de múltiples interfaces
public class ClaseBase { … }
public interface IInterfaz { … }
public class ClaseDerivada : ClaseBase, IInterfaz { … }
LA CLASE SYSTEM.OBJECT
Todos los tipos heredan de System.Object
public class Object
{
public Object();
public virtual bool Equals(object obj);
public static bool Equals(object objA, object objB);
public virtual int GetHashCode();
public Type GetType();
protected object MemberwiseClone();
public static bool ReferenceEquals(object objA, object objB);
public virtual string ToString();
}
C# - TERMINACIÓN DE LÍNEA
C#: la línea finaliza con un “ ; ”
//Una linea con mas de un renglon
string nombre = primerNombre +
apellido;
//El punto y coma indica FINAL de linea
C# - DECLARACIÓN DE BLOQUES
En C# los bloques se declaran entre llaves
class MainClass{
public static void Main(string[] args) {
Console.WriteLine("Hello World!");
}
}
NAMESPACES
Declaración:
namespace <NombreEspacio>
{
<Definición tipos>
}
Anidación de namespaces
NmbEspacio1.NmbEspacio2.NmbEspacio3
;
Referencia a namespaces externos
using
Alias: evita conflictos entre namespaces
using <alias> = <NombreCompletoTipo>;
SISTEMA DE TIPOS UNIFICADO
Tipos valor y referencia
SISTEMA DE TIPOS UNIFICADO
Boxing & Unboxing
Los tipos valor (struct, enum, int…) pueden ser convertidos en tipos
referencia (y viceversa) de forma automática mediante Boxing (y
Unboxing)
Boxing:
Encapsulación de tipo valor en tipo referencia
Ej: la siguiente sentencia “envuelve” el valor 3 en un objeto
int i = 3;
object obj = i;
Unboxing
Proceso inverso al boxing. Tratamiento de tipo referencia como tipo valor
Ej.: la siguiente sentencia “desenvuelve” el valor
int x = (int) obj;
TIPOS PREDEFINIDOS
OPERADORES
Aritméticos
Obtención de información sobre tipos
+, -, *, /, % typeof(Type t)
Obtiene el objeto System.Type para un tipo
Asignación <expression> is <type>
as
+=, -=, *=, /=, %=, ++, --
Similar a proceso de casting, pero devuelve null en lugar de
Comparación InvalidCastException
<expression> as <type> ==
==, !=, <, >, <=, >= if (<expression> is <type>) { (<type>) <expression> }
else { null }
Lógicos Type t = typeof(SampleClass);
// Alternatively, you could use
&, &&, |, ||, ~, !, ^
// SampleClass obj = new SampleClass();
// Type t = obj.GetType();