Este documento presenta una agenda para un curso de programación en C#. La agenda incluye una introducción al .NET Framework, al lenguaje C# y a Visual Studio.NET. También cubre temas como aplicaciones de ventanas, ASP.NET, acceso a datos y más.
4. Framework y Herramientas
VB C++ C# JScript J#
Herramientas:
Common Language Specification
ILDASM
Visual Studio.NET
ASP.NET Windows DUMPBIN
Web Forms Web Services PE File
Forms Format Viewer
Mobile Internet Toolkit GAC.EXE
Assembly
ADO.NET and XML Registration
Utility
ILASM
Base Class Library MSIL
Assembler
XSD.EXE
Common Language Runtime Schema
Definition
Tool
Sistema Operativo
5. Common Language Runtime
Simplifica drásticamente el desarrollo de
aplicaciones
Provee un entorno de ejecución robusto
y seguro
Soporta múltiples lenguajes de
programación
Simplifica la instalación y administración
de las aplicaciones
6. Simplificar el Desarrollo
Elimina completamente la “plomería”
No más registración, GUIDs, archivos .IDL,
HRESULTs, IUnknown, AddRef/Release,
CoCreateInstance, etc.
Orientación a Objetos nativa
Soporte total de Clases y herencia
Aún a través de distintos lenguajes!
Total Interoperabilidad
Cualquier clase .NET puede ser usada como una
clase COM sin trabajo adicional
Las clases COM pueden importarse como clases
.NET
7. Common Language Runtime
Base Class Library Support
Thread Support COM Marshaler
Type Checker Exception Manager
Security Engine Debug Engine
IL to Native Code Garbage
Compilers Manager Collector
Class Loader
8. Common Language
Specification
Carácterísticas comunes a todos los
lenguajes
Sólo se aplica a los tipos visibles
Tipos comunes
Tipos primitivos
Nombres de métodos, propiedades
Soporte de Clases, Interfaces
Palabras Reservadas
9. Common Type System
Tipos simples
Int16
Int32
UInt32
String
Tipos complejos
GUID
RegEx
DateTime
TimeSpan
Todo es un objeto
Los tipos primitivos tienen clases correspondientes en el .NET
Framework
Int es un alias de System.Int32 (que deriva de System.ValueType)
10. Tipos Valor Primitivos
Son soportados directamente por el CLR y
son parte del CTS
Enteros
int8, int16, int32, int64, sin signo...
Decimales
decimal (28 digitos)
Reales
float32, float64
Caracteres UNICODE
char
Booleanos
bool
11. Tipos Básicos de Referencia
Object
El padre de todos los tipos Referencia
String
Los String son objetos
La clase es final
Son inmutables
14. Otras Opciones
public static void Main() {
...
}
public static int Main() {
...
return 0;
}
public static int Main(string[] args) {
...
return 0;
}
15. Compilador de Línea de
Comando
Crear código fuente: Hola.cs.
Invocar compilador: csc Hola.cs
Si está bien, se crea Hola.exe.
Ejecutar: Hola
16. Estructura de un programa C#
Namespaces
Tipos, espacios de nombres
Declaración de tipos
Clases, interfaces, estructuras, enums, delegados
Miembros
Campos, métodos, constantes, indexadores,
propiedades, eventos, operadores, constructores,
destructores
17. Namespace
= Paquetes de Tipos
namespace N1 { // N1
class C1 { // N1.C1
class C2 {} // N1.C1.C2
}
namespace N2 { // N1.N2
class C2 {} // N1.N2.C2
}
}
18. Creando DLLs
using System;
namespace MyLibreria {
public class ClaseSuma {
public static long Suma(long i, long j) {
return(i+j);
}
}
}
using System;
namespace MiLibreria {
public class ClaseMultiplica {
public static long Multiplica(long i, long j) {
return(i*j);
}
}
}
19. Usando DLLs
using System;
using MiLibreria;
class MiCliente {
public static void Main() {
long suma = ClaseSuma.Suma(10, 10);
Console.WriteLine(suma);
long producto =
ClaseMultiplica.Multiplicar(10, 10);
Console.WriteLine(producto);
}
}
20. Tipos Valor (Value Types)
primitivos
int i;
enums
enum State { Off, On }
structs
struct Point { int x, y; }
22. Excepciones
try {
throw new Exception(“Oops!”);
} catch (Exception e) {
… Maneja Excepción ……;
} finally {
… Código de limpieza, se ejecuta siempre…;
}
23. Interfaces y Clases
interface IFigure {
int Area ();
}
class Square : IFigure {
private int side;
public Square (int side) {
this.side = side;
}
public int Area () {
return (side*side);
}
}
24. Constructores
class B : A {
public B (int x) : base (…,…,…) {
…………
}
public B (bool b) : this (…,…,…) {
…………
}
public B (char c) {
…………
}
}
25. Interfaces
interface IA {
void g ();
}
interface IB : IA { interface IC : IA {
void f (); void f ();
} }
class X : IB, IC {
void IA.g () { Console.WriteLine ("IA.g"); }
void IC.f () { Console.WriteLine ("IC.f"); }
void IB.f () { Console.WriteLine ("IB.f"); }
}
26. Interfaces
class Test {
public static void Main () {
X x = new X ();
((IA)x).g();
((IC)x).f();
((IB)x).f();
}
}
27. Métodos Virtuales
public class Dog {
public virtual void RollOver () {
Console.WriteLine("Scratch my tummy.");
Bark();
}
public virtual void Bark () {
Console.WriteLine("WOOF WOOF (Dog)");
}
}
28. Propiedades e Indexadores
class Party {
private int start;
public int Start {
get {
return start;
}
set {
start = value;
}
}
}
30. Propiedades e Indexadores
class Party {
private Dictionary participants;
public Borrel() {
participants = new Dictionary();
}
public bool this[String name] {
get {
return (participants.Contains(name)
&& (bool)participants[name]);
}
set {
participants.Add(name,value);
}
}
}
36. WinForms
using System;
using System.Window.Forms;
using System.Drawing;
public class MyForm : Form {
public MyForm() {
this.Text = “Hello World”; }
}
public class Demo {
public static void Main() {
Application.Run(new MyForm());
}
}
37. Desarrollo Visual
Nuevo System.Windows
Los formularios son clases
Los controles son clases
Posicionamiento de los controles
Propiedades
Ciclo de vida de controles y formularios
38. Aplicación Windows
Proyecto Aplicación Windows
Formulario
Diseñador de Formulario
Código automático
Controles
Eventos
39. Controles y Formularios
Nuevos controles
Nuevas propiedades
MDI
Herencia de Formularios
Uso de controles OCX
Controles propios