c# manual en net

Upload: yana-caceres-tyc

Post on 10-Apr-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 c# manual en net

    1/94

    Qu es C#?

    Lenguaje Orientado a Objetos

    Objeto

    Herencia

    Clase

    Funciones Miembro

    Campos Estticos

    Clase Base

    Clase Derivada

    Clase Abstracta

    Clase Sealed

    Overloading/Sobrecarga

    Herencia Simple

    Polimorfismo y Funciones Virtuales Encapsulacin y Visibilidad

    Abstraccin

    Plataforma .NET

    .NET Common Language Runtime - CLR

    Caractersticas del CLR

    .NET Runtime Environment

    Ambiente/Entorno de Ejecucin

    Ensamblaje

    Interoperabilidad de Lenguaje Atributos

    Biblioteca de Clases de la Plataforma .NET

    Requerimientos de Software

    Lenguaje Intermedio y Metadatos

    JIT

    Sistema de Tipo Unificado

    El Sistema Virtual de Objetos - VOS

    VOS Type System

    Metadata y Reflection

    Seguridad

    Deployment

    Interoperabilidad con cdigo no administrado

    Common Language Specification - CLS

    Virtual Execution System - VES

    Tipos de Datos

    Constantes y Campos Solo Lectura

    Ejemplo Hello World!

    Ejemplo Args

    Ejemplo Input/Output

    Ejemplo String Format

    http://www.canalvisualbasic.net/manual-net/c-sharp/#cSharphttp://www.canalvisualbasic.net/manual-net/c-sharp/#LOOhttp://www.canalvisualbasic.net/manual-net/c-sharp/#objecthttp://www.canalvisualbasic.net/manual-net/c-sharp/#inheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Classhttp://www.canalvisualbasic.net/manual-net/c-sharp/#functionsMemberhttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticFieldshttp://www.canalvisualbasic.net/manual-net/c-sharp/#baseClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#derivedClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#abstractClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#sealedClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Overloadinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#simpleInheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#polymorphismhttp://www.canalvisualbasic.net/manual-net/c-sharp/#encapsulationVisibilityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#abstractionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#netFrameworkhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLRhttp://www.canalvisualbasic.net/manual-net/c-sharp/#clrFeatureshttp://www.canalvisualbasic.net/manual-net/c-sharp/#netRuntimeEnvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#exeEnvironmenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#assemblieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#interophttp://www.canalvisualbasic.net/manual-net/c-sharp/#attributeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#classLibraryhttp://www.canalvisualbasic.net/manual-net/c-sharp/#requirementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#jithttp://www.canalvisualbasic.net/manual-net/c-sharp/#utshttp://www.canalvisualbasic.net/manual-net/c-sharp/#voshttp://www.canalvisualbasic.net/manual-net/c-sharp/#vosTypeSyshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#securityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Deploymenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#interopUnmanagedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#clshttp://www.canalvisualbasic.net/manual-net/c-sharp/#veshttp://www.canalvisualbasic.net/manual-net/c-sharp/#dataTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#constantshttp://www.canalvisualbasic.net/manual-net/c-sharp/#helloWorldhttp://www.canalvisualbasic.net/manual-net/c-sharp/#argshttp://www.canalvisualbasic.net/manual-net/c-sharp/#inOuthttp://www.canalvisualbasic.net/manual-net/c-sharp/#strFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#LOOhttp://www.canalvisualbasic.net/manual-net/c-sharp/#objecthttp://www.canalvisualbasic.net/manual-net/c-sharp/#inheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Classhttp://www.canalvisualbasic.net/manual-net/c-sharp/#functionsMemberhttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticFieldshttp://www.canalvisualbasic.net/manual-net/c-sharp/#baseClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#derivedClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#abstractClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#sealedClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Overloadinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#simpleInheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#polymorphismhttp://www.canalvisualbasic.net/manual-net/c-sharp/#encapsulationVisibilityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#abstractionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#netFrameworkhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLRhttp://www.canalvisualbasic.net/manual-net/c-sharp/#clrFeatureshttp://www.canalvisualbasic.net/manual-net/c-sharp/#netRuntimeEnvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#exeEnvironmenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#assemblieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#interophttp://www.canalvisualbasic.net/manual-net/c-sharp/#attributeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#classLibraryhttp://www.canalvisualbasic.net/manual-net/c-sharp/#requirementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#jithttp://www.canalvisualbasic.net/manual-net/c-sharp/#utshttp://www.canalvisualbasic.net/manual-net/c-sharp/#voshttp://www.canalvisualbasic.net/manual-net/c-sharp/#vosTypeSyshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#securityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Deploymenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#interopUnmanagedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#clshttp://www.canalvisualbasic.net/manual-net/c-sharp/#veshttp://www.canalvisualbasic.net/manual-net/c-sharp/#dataTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#constantshttp://www.canalvisualbasic.net/manual-net/c-sharp/#helloWorldhttp://www.canalvisualbasic.net/manual-net/c-sharp/#argshttp://www.canalvisualbasic.net/manual-net/c-sharp/#inOuthttp://www.canalvisualbasic.net/manual-net/c-sharp/#strFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#cSharp
  • 8/8/2019 c# manual en net

    2/94

    FuncinMain

    Mltiples FuncionesMain

    Preprocesamiento

    Comentarios

    Value Types Tipos simples

    Integral

    Bool

    Char

    Floating Point

    Decimal

    Tipos Estructura

    Tipos Enumeracin

    Tipos Referencia

    Tipo Objeto

    Tipo Clase

    Interfaces

    Delegados

    Tipo string

    Arreglos

    Arreglos Multidimensionales

    Arreglo de Arreglos

    Arreglos de Objetos

    Conversin de Arreglos

    Clase Array

    Interface IComparable

    Interface IComparer

    IComparer Como Propiedad

    Expresiones Regulares

    Operador as

    Secuencias de Escape

    Boxing

    Conversiones Boxing Conversiones Unboxing

    Constructores y Destructores

    Constructor Esttico

    Mtodos

    Parmetros

    Valores en Parmetros in

    Valores en Parmetros ref

    Valores en Parmetros out

    Ejemplo de Parmetros In, Ref y Out Redefinicin de Mtodos (Overriding)

    http://www.canalvisualbasic.net/manual-net/c-sharp/#mainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#mainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#mainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#multipleMainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#multipleMainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#multipleMainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#preprocessinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#commentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#valueTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#simpleTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Integralhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Integralhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Boolhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Boolhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Charhttp://www.canalvisualbasic.net/manual-net/c-sharp/#FloatingPointhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Decimalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Decimalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#structTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#enumTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#referenceTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#objectTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#classTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Interfaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#delegateshttp://www.canalvisualbasic.net/manual-net/c-sharp/#stringTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Arrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#multidimensionalArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arraysOfArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#objectArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arrayConversionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arrayClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparableInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparableInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparableInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerProphttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerProphttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerProphttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerProphttp://www.canalvisualbasic.net/manual-net/c-sharp/#regexhttp://www.canalvisualbasic.net/manual-net/c-sharp/#asOperatorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#asOperatorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#asOperatorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#escSechttp://www.canalvisualbasic.net/manual-net/c-sharp/#Boxinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#BoxingConvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#UnboxingConvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticConstructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#methodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#parametershttp://www.canalvisualbasic.net/manual-net/c-sharp/#inParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#refParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#refParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#refParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#outParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#outParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#outParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inRefOuthttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#mainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#multipleMainhttp://www.canalvisualbasic.net/manual-net/c-sharp/#preprocessinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#commentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#valueTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#simpleTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Integralhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Boolhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Charhttp://www.canalvisualbasic.net/manual-net/c-sharp/#FloatingPointhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Decimalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#structTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#enumTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#referenceTypeshttp://www.canalvisualbasic.net/manual-net/c-sharp/#objectTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#classTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Interfaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#delegateshttp://www.canalvisualbasic.net/manual-net/c-sharp/#stringTypehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Arrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#multidimensionalArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arraysOfArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#objectArrayshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arrayConversionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#arrayClasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparableInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerInterfacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IComparerProphttp://www.canalvisualbasic.net/manual-net/c-sharp/#regexhttp://www.canalvisualbasic.net/manual-net/c-sharp/#asOperatorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#escSechttp://www.canalvisualbasic.net/manual-net/c-sharp/#Boxinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#BoxingConvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#UnboxingConvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticConstructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#methodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#parametershttp://www.canalvisualbasic.net/manual-net/c-sharp/#inParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#refParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#outParamhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inRefOuthttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethods
  • 8/8/2019 c# manual en net

    3/94

    Ocultamiento de Mtodos (Hiding)

    Propiedades

    Accessors

    Propiedades Estticas

    ndices

    Eventos

    Modificadores

    Modificadores de Clase

    Modificadores Miembro

    Modificadores de Acceso

    public

    protected

    private

    internal

    Sentencias de Control

    Sentencias de Seleccin

    Sentencia if

    Sentencia switch

    Sentencias de Iteracin (repeticin)

    Sentencia for

    Sentencia foreach

    Sentencia while

    Sentencia do

    Sentencias de Salto break

    continue

    goto

    return

    Asignacin Definitiva

    Precedencia de Operadores

    typeof

    is

    Conversiones

    Manejo de Excepciones

    Jerarqua de Excepciones

    Trabajar con Excepciones

    Chequeo de Overflow

    Chequeo programtico de Overflow

    Sentencias para el Manejo de Excepciones

    try - catch

    try - finally

    try - catch - finally

    http://www.canalvisualbasic.net/manual-net/c-sharp/#hidingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#propertieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#accessorshttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticPropertieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#indexershttp://www.canalvisualbasic.net/manual-net/c-sharp/#eventshttp://www.canalvisualbasic.net/manual-net/c-sharp/#modifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#classModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#memberModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#accessModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#publichttp://www.canalvisualbasic.net/manual-net/c-sharp/#protectedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#privatehttp://www.canalvisualbasic.net/manual-net/c-sharp/#internalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#internalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#controlStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#controlStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#selectionStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#ifStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#switchStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#iterationStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#forStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#foreachStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#whileStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#doStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#jumpStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#breakhttp://www.canalvisualbasic.net/manual-net/c-sharp/#breakhttp://www.canalvisualbasic.net/manual-net/c-sharp/#continuehttp://www.canalvisualbasic.net/manual-net/c-sharp/#continuehttp://www.canalvisualbasic.net/manual-net/c-sharp/#gotohttp://www.canalvisualbasic.net/manual-net/c-sharp/#gotohttp://www.canalvisualbasic.net/manual-net/c-sharp/#returnhttp://www.canalvisualbasic.net/manual-net/c-sharp/#returnhttp://www.canalvisualbasic.net/manual-net/c-sharp/#definitiveAssignmenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#operatorsPrecedencehttp://www.canalvisualbasic.net/manual-net/c-sharp/#typeofhttp://www.canalvisualbasic.net/manual-net/c-sharp/#typeofhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ishttp://www.canalvisualbasic.net/manual-net/c-sharp/#ishttp://www.canalvisualbasic.net/manual-net/c-sharp/#conversionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#exceptionHandlinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#exceptionHierarchyhttp://www.canalvisualbasic.net/manual-net/c-sharp/#workingExceptionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#overflowCheckinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#overflowProCheckinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#eHandlingSentenceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryCatchhttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryFinallyhttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryCatchFinallyhttp://www.canalvisualbasic.net/manual-net/c-sharp/#hidingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#propertieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#accessorshttp://www.canalvisualbasic.net/manual-net/c-sharp/#staticPropertieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#indexershttp://www.canalvisualbasic.net/manual-net/c-sharp/#eventshttp://www.canalvisualbasic.net/manual-net/c-sharp/#modifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#classModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#memberModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#accessModifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#publichttp://www.canalvisualbasic.net/manual-net/c-sharp/#protectedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#privatehttp://www.canalvisualbasic.net/manual-net/c-sharp/#internalhttp://www.canalvisualbasic.net/manual-net/c-sharp/#controlStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#selectionStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#ifStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#switchStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#iterationStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#forStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#foreachStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#whileStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#doStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#jumpStatementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#breakhttp://www.canalvisualbasic.net/manual-net/c-sharp/#continuehttp://www.canalvisualbasic.net/manual-net/c-sharp/#gotohttp://www.canalvisualbasic.net/manual-net/c-sharp/#returnhttp://www.canalvisualbasic.net/manual-net/c-sharp/#definitiveAssignmenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#operatorsPrecedencehttp://www.canalvisualbasic.net/manual-net/c-sharp/#typeofhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ishttp://www.canalvisualbasic.net/manual-net/c-sharp/#conversionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#exceptionHandlinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#exceptionHierarchyhttp://www.canalvisualbasic.net/manual-net/c-sharp/#workingExceptionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#overflowCheckinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#overflowProCheckinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#eHandlingSentenceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryCatchhttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryFinallyhttp://www.canalvisualbasic.net/manual-net/c-sharp/#tryCatchFinally
  • 8/8/2019 c# manual en net

    4/94

    Lanzamiento de Excepciones

    Relanzamiento de Excepciones

    Creacin de Clases Exception

    Componentes

    Creacin de Componentes

    Compilacin de Componentes

    Creacin de una Aplicacin Cliente

    Compilacin de Clientes

    Namespaces

    Envolver Clases en Namespace

    Utilizar Namespace en Aplicaciones Cliente

    Agregar Mltiples Clases a Un Namespace

    Namespace y Ensambles

    Compilacin Condicional

    Uso del Preprocesador

    Definicin de smbolos

    Exclusin de cdigo basado en smbolos

    Lanzamiento de errores y advertencias

    Atributo conditional

    Comentarios de Documentacin en XML

    Elementos XML

    Componentes .NET

    Componentes .NET Privados

    Componentes .NET Compartidos Interoperabilidad COM

    Uso de Componentes .NET en Componentes .COM

    Uso de Componentes COM en Componentes .NET

    Invocacin de Servicios

    Cdigo No Seguro

    Debugging

    Seguridad

    Seguridad de acceso al cdigo

    Permisos Estndar Permisos Identidad

    Seguridad basada en roles

    Funcin ToString()

    Funcin Equals()

    Clase Hashtable

    Interface IHashCodeProvider

    Funcin ICloneable

    http://www.canalvisualbasic.net/manual-net/c-sharp/#throwingExceptionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#reThrowExceptionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#createClassExceptionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#componenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#creatingComponenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#compilingComponenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#clientApplicationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#compilingClienthttp://www.canalvisualbasic.net/manual-net/c-sharp/#Namespaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#wrappingClassNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#usingNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#addMultipleClassNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#namespaceAssemblieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalCompilationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalCompilationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#usagePreprocesorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#definingSymbolshttp://www.canalvisualbasic.net/manual-net/c-sharp/#exludingCodehttp://www.canalvisualbasic.net/manual-net/c-sharp/#raisingErrhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalAttribhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalAttribhttp://www.canalvisualbasic.net/manual-net/c-sharp/#docCommXMLhttp://www.canalvisualbasic.net/manual-net/c-sharp/#xmlElementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#netComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#privateNetComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#sharedNetComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#COMinterophttp://www.canalvisualbasic.net/manual-net/c-sharp/#netComhttp://www.canalvisualbasic.net/manual-net/c-sharp/#comNethttp://www.canalvisualbasic.net/manual-net/c-sharp/#callServiceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#unsageCodehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Debugginghttp://www.canalvisualbasic.net/manual-net/c-sharp/#securityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#codeAccesshttp://www.canalvisualbasic.net/manual-net/c-sharp/#standardPermissionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#identityPermissionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#roleBasedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#toStringhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Equalshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Hashtablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Hashtablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Hashtablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IHashCodeProviderhttp://www.canalvisualbasic.net/manual-net/c-sharp/#IHashCodeProviderhttp://www.canalvisualbasic.net/manual-net/c-sharp/#IHashCodeProviderhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ICloneablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#ICloneablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#ICloneablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#throwingExceptionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#reThrowExceptionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#createClassExceptionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#componenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#creatingComponenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#compilingComponenthttp://www.canalvisualbasic.net/manual-net/c-sharp/#clientApplicationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#compilingClienthttp://www.canalvisualbasic.net/manual-net/c-sharp/#Namespaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#wrappingClassNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#usingNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#addMultipleClassNamespacehttp://www.canalvisualbasic.net/manual-net/c-sharp/#namespaceAssemblieshttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalCompilationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#usagePreprocesorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#definingSymbolshttp://www.canalvisualbasic.net/manual-net/c-sharp/#exludingCodehttp://www.canalvisualbasic.net/manual-net/c-sharp/#raisingErrhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalAttribhttp://www.canalvisualbasic.net/manual-net/c-sharp/#docCommXMLhttp://www.canalvisualbasic.net/manual-net/c-sharp/#xmlElementshttp://www.canalvisualbasic.net/manual-net/c-sharp/#netComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#privateNetComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#sharedNetComponentshttp://www.canalvisualbasic.net/manual-net/c-sharp/#COMinterophttp://www.canalvisualbasic.net/manual-net/c-sharp/#netComhttp://www.canalvisualbasic.net/manual-net/c-sharp/#comNethttp://www.canalvisualbasic.net/manual-net/c-sharp/#callServiceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#unsageCodehttp://www.canalvisualbasic.net/manual-net/c-sharp/#Debugginghttp://www.canalvisualbasic.net/manual-net/c-sharp/#securityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#codeAccesshttp://www.canalvisualbasic.net/manual-net/c-sharp/#standardPermissionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#identityPermissionshttp://www.canalvisualbasic.net/manual-net/c-sharp/#roleBasedhttp://www.canalvisualbasic.net/manual-net/c-sharp/#toStringhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Equalshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Hashtablehttp://www.canalvisualbasic.net/manual-net/c-sharp/#IHashCodeProviderhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ICloneable
  • 8/8/2019 c# manual en net

    5/94

    Formato Numrico

    Formato Personalizado String

    Formato Estndar String

    Parseo Numrico

    Input/Output

    Lectura y Escritura de Archivos

    Serializacin

    Threading (Hilos)

    Qu es C#?C# o C Sharp es un lenguaje de programacin que est incluido en la Plataforma .NET ycorre en el Lenguaje Comn en Tiempo de Ejecucin (CLR, Common Language Runtime).El primer lenguaje en importancia para el CLR es C#, mucho de lo que soporta laPlataforma .NET est escrito en C#.C# intenta ser el lenguaje base para escribir aplicaciones .NETC# deriva de C y C++, es moderno, simple y enteramente orientado a objetos, simplifica y

    moderniza a C++ en las reas de clases, namespaces, sobrecarga de mtodos y manejode excepciones. Se elimino la complejidad de C++ para hacerlo ms fcil de utilizar ymenos propenso a errores.Algunas caractersticas de C# son:

    C# provee el beneficio de un ambiente elegante y unificado.

    No soporta herencia mltiple, solamente el runtime .NET permite la herenciamltiple en la forma de interfaces, las cuales no pueden contenerimplementacin.

    No maneja apuntadores, para emular la funcin de los apuntadores seutiliza delegates el cual provee las bases para el .NET event model.

    Por default trabaja con cdigo administrado. La Plataforma .NET provee un colector de basura que es responsable de

    administrar la memoria en los programas C#.

    El manejo de errores est basado en excepciones.

    Soporta los conceptos como encapsulacin, herencia y polimorfismo de laprogramacin orientada a objetos.

    El Modelo completo de clases est construido en la cima del .NET VirtualObject System (VOS). El modelo de objetos es parte de la infraestructura yya no forma parte del lenguaje de progrmacin.

    No existen funciones globales, variables o constantes. Todo deber serencapsulado dentro de la clase, como un miembro de la instancia (accesible

    via una instancia de clase) o un miembro esttico (via el tipo). Los mtodos que se definen en las clases son por default no virtuales (no

    pueden ser sobre escritos al derivar clases)

    Soporta los modificadores de accesoprivate,protected,public y agregaun cuarto modificador internal.

    Solamente se permite una base clase, si se requiere herencia mltiple esposible implementar intefaces.

    No es posible utilizar variables no inicializadas.

    No es posible hacer el cast de un entero a un tipo de referencia (objeto).

    Los parmetros que son pasados son type-safe.

    El soporte de versiones lo provee el CLR.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#formathttp://www.canalvisualbasic.net/manual-net/c-sharp/#customFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#standardFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#numericParsinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#i/ohttp://www.canalvisualbasic.net/manual-net/c-sharp/#readWriteFileshttp://www.canalvisualbasic.net/manual-net/c-sharp/#serializationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Threadinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#formathttp://www.canalvisualbasic.net/manual-net/c-sharp/#customFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#standardFormathttp://www.canalvisualbasic.net/manual-net/c-sharp/#numericParsinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#i/ohttp://www.canalvisualbasic.net/manual-net/c-sharp/#readWriteFileshttp://www.canalvisualbasic.net/manual-net/c-sharp/#serializationhttp://www.canalvisualbasic.net/manual-net/c-sharp/#Threading
  • 8/8/2019 c# manual en net

    6/94

    Permite acceder a diferentes APIs a travs de .NET Common LanguageSpecification, el cual define el estdar de interoperabilidad entre lenguajesque se adhieran a este estndar.

    La Plataforma .NET provee un acceso transparente a COM.

    Soporta OLE

    Permite la interoperabilidad con APIs al estilo C y DLLs, esta caractersticapara acceder a APIs nativas es llamada Platform Invocation Services(PInvoke)

    Por default el cdigo es safe mode, pero es posible declarar clases o slomtodos unsafe, esta declaracin permite utilizar apuntadores, estructurasy almacenamiento de arreglos estticos.

    C# depende del runtime que provee la Plataforma .NET, el runtimeadministra la ejecucin de cdigo.

    Lenguaje Orientado a ObjetosSegn Bjarne Stroustrup autor del lenguaje de programacin C++, para que un lenguajesea llamado Orientado a Objetos debe soportar tres conceptos: objetos, clases y herencia.Aunque los lenguajes orientados a objetos se construyen sobre los conceptos de :

    Encapsulacin

    Herencia

    Polimorfismo

    ObjetoUn Objeto es una instancia de un tipo de clase.La instanciacin es el acto de crear una instancia de un objeto, la instancia es un objeto, lainstanciacin usa el operador new, despus la instanciacin es posible comunicarnos con elobjeto a travs de sus miembros.

    Un Objeto es una coleccin de informacin relacionada y funcional.Un objeto se compone de:

    Datos que describen el objeto y

    Operaciones que pueden ser realizadas por el objeto

    HerenciaLa Herencia es la habilidad para heredar datos y funcionalidad de un objeto padre, laherencia es una caracterstica fundamental de un sistema orientado a objetos.A travs de la herencia es posible crear o derivar una nueva clase basada en una claseexistente.

    Una clase derivada es la nueva clase que esta siendo creada y la clase base es una de lascuales la nueva clase es derivada. La nueva clase derivada hereda todos los miembros dela clase base por consiguiente permite reusar el trabajo previo.En C# se puede asumir que la clase derivada podra heredar todos los miembros de laclase base.La herencia es un ejemplo del diseo orientado a objetos conocido como una relacin "is-a"(es-un), por ejemplo:"un empleado es una persona".Al utilizar la herencia la clase base necesita ser diseada teniendo en mente la herencia, silos objetos no tienen la estructura apropiada la herencia no podra funcionarcorrectamente.Una clase derivada no debera requerir ms ni prometer menos que su clase base sobrecualquiera de sus interfaces heredadas.Una interfaz de clase es un contrato entre esta y los programadores que usan la clase.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#encapsulationVisibilityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#polymorphismhttp://www.canalvisualbasic.net/manual-net/c-sharp/#encapsulationVisibilityhttp://www.canalvisualbasic.net/manual-net/c-sharp/#inheritancehttp://www.canalvisualbasic.net/manual-net/c-sharp/#polymorphism
  • 8/8/2019 c# manual en net

    7/94

    upcasting, cuando un programador tiene una referencia a la clase derivada, elprogramador siempre puede tratar a esa clase como si fuera la clase base.En el lenguaje comn en tiempo de ejecucin .NET todos los objetos heredan de la ltimaclase base llamada object y existe slo una herencia simple de objetos.

    Un objeto puede derivar slo de una clase base.Clase

    Una Clase es una plantilla para un objeto.Una Clase define las operaciones que un objeto puede realizar y define un valor quemantiene el estado del objeto, los componentes principales de una clase son: mtodos,eventos y propiedades.Una instancia de una clase es un objeto, se accede a la funcionalidad de un objetoinvocando sus mtodos y accediendo a sus propiedades, eventos y campos.Una clase utiliza modificadores para especificar la accesibilidad de la clase y suscomponentes, los componentes de una clase son llamados miembros por lo que existendiferentes tipos de miembros. Una referencia se refiere a una instancia, una instancia es lacreacin de un objeto del tipo clase que se est declarando. Una clase utiliza ninguno, unoo ms constructores para ayudar a definir la instancia de una clase. Existe una palabrareservada llamada this que sirve para hacer referencia a la clase actual en el mbito en elcual es utilizada. Cuando se hace referencia a una variable de instancia que tiene el mismonombre de un parmetro se debe utilizar this.name.

    Al crear y manipular objetos no es necesario administrar la memoria que estos ocupan yaque existe un mecanismo que se encarga de esto llamado garbage collector(recolector debasura), pero es una buena prctica no olvidar liberar los recursos.Funciones MiembroUna Funcin Miembro puede ser un constructor, es decir, una pieza de cdigo que esinvocada en una instancia del objeto.Campos EstticosUn Miembro Esttico definine miembros de un objeto que no son asociados con unainstancia de clase especfica.Un Campo Esttico es el tipo ms simple de un miembro esttico, para declarar uncampo esttico se utiliza el modificador static.

    Un campo esttico puede accederse a travs del nombre de la clase, en vez de la instanciade la clase (objeto):

    using System;class MiContador{

    //Campo Estticopublic static int iContador = 0;public MiContador(){

    iContador++;}

    }class App{

    public static void Main(){

    MiContador ContadorA = new MiContador();Console.WriteLine(MiContador.iContador);MiContador ContadorB = new MiContador();Console.WriteLine(MiContador.iContador);

    }}

    El ejemplo determina cuantas instancias del objeto han sido creadas.Clase BaseUna Clase base es un objeto padre de donde se basa un nuevo trabajo.Clase DerivadaUna Clase derivada es un objeto hijo.Clase Abstracta

    Una Clase Abstracta define las funciones que una clase derivada debe implementar.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#modifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#modifiershttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructor
  • 8/8/2019 c# manual en net

    8/94

    Una Clase Abstracta define un contrato en donde las clases derivadas deben definir lasfunciones que la clase padre marca utilizando la palabra reservada abstract, adems quela clase padre tambin se define como abstract.

    using System;abstract public class Persona{//Indica que la clase es

    abstracta

    //Propiedadespublic string sNombre;public int iEdad;//Constructorpublic Persona(string sNombre, int iEdad){

    this.sNombre = sNombre;this.iEdad = iEdad;

    }//Mtodosabstract public string Tipo();//Mtodo que la clase

    derivada debe implementar}//Herencia Simple

    public class Empleado : Persona{public Empleado(string sNombre, intiEdad):base(sNombre, iEdad){}

    override public string Tipo(){return "Empleado";

    }}

    class App{//Aplicacin

    public static void Main(){Console.WriteLine("--- Arreglo de Objetos ---");

    Empleado[] aProgramadores = new Empleado[2];aProgramadores[0] = new Empleado("Bill Gates", 50);aProgramadores[1] = new Empleado("Eric S. Raymond",

    60);for(int i = 0; i < aProgramadores.Length; i++){

    Console.WriteLine("aProgramadores["+i+"].sNombre : "+ aProgramadores[i].sNombre);

    Console.WriteLine("aProgramadores[" + i + "].iEdad :" + aProgramadores[i].iEdad);

    Console.WriteLine("aProgramadores[" + i + "].Tipo :" + aProgramadores[i].Tipo());

    }}

    }

    Clase SealedUna Clase sealedse utiliza para prevenir que una clase sea utilizada como una clasebase, su principal uso es para prevenir la derivacin no planeada.

    sealed class ClaseBase{ClaseBase(){}

    }class ClaseDerivada : ClaseBase{}class Sellada{

    public static void Main(){ClaseDerivada CD = new ClaseDerivada();

    }}

  • 8/8/2019 c# manual en net

    9/94

    Al compilar el cdigo se muestra el siguiente mensaje:

    sealed.cs(4,7): error CS0509: 'ClaseDerivada' : cannot inheritfrom sealed class 'ClaseBase'

    sealed.cs(1,14): (Location of symbol related to previous error)

    El error es porque ClaseDerivada no puede utilizar ClaseBase como una clase baseporque ClaseBase es sealed, es decir, no permite derivaciones.

    Overloading/SobrecargaLa Sobrecarga (Overloading) hace posible utilizar dos o ms clases con el mismo nombre,pero con parmetros diferentes. La sobrecarga es comn especialmente para losconstructores para definir diferentes maneras de crear una instancia nueva.Cuando una funcin sobrecargada es invocada el compilador selecciona la funcinapropiada que coincide con los parmetros.Herencia SimpleLa Herencia Simple permite derivar una clase en una clase nueva, que contiene ladefinicin de la clase de la cual deriva, es decir, hereda todos los miembros datos de laclase, aunque pueden existir miembros a los cuales no se pueda tener acceso por ser

    private.Los constructores no pueden ser heredados, por lo que es necesario escribir constructoresy si funcionalmente no existe alguna modificacin se invoca el constructor de la clase quehereda utilizando la sintaxis base. Si se omite el constructor de la clase base y esinvocado el compilador podra invocar el constructor de la clase base sin parmetros.

    using System;public class Persona{

    //Propiedadespublic string sNombre;public int iEdad;private double dSueldo;//Constructorpublic Persona(string sNombre, int iEdad){

    this.sNombre = sNombre;this.iEdad = iEdad;}//Mtodospublic string Tipo(){

    return "Persona";}public void AsignarSueldo(double dSueldo){

    this.dSueldo = dSueldo;}public double ObtenerSueldo(){

    return this.dSueldo;}

    }//Herencia Simplepublic class Empleado : Persona{

    public Empleado(string sNombre, intiEdad):base(sNombre, iEdad){}

    public new string Tipo(){return "Empleado";

    }double dSueldo;public new void AsignarSueldo(double dSueldo){

    this.dSueldo = dSueldo * dSueldo;}public new double ObtenerSueldo(){

    return this.dSueldo;}}

    http://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#privatehttp://www.canalvisualbasic.net/manual-net/c-sharp/#constructorhttp://www.canalvisualbasic.net/manual-net/c-sharp/#private
  • 8/8/2019 c# manual en net

    10/94

    class App{//Aplicacinpublic static void Main(){

    Persona Mexicano = new Persona("Gerado ngelesNava", 33);

    Console.WriteLine("Mexicano.sNombre : " +Mexicano.sNombre);Console.WriteLine("Mexicano.iEdad : " +

    Mexicano.iEdad);double dSueldo = 123.456;Mexicano.AsignarSueldo(dSueldo);Console.WriteLine("Mexicano.iSueldo : " +

    Mexicano.ObtenerSueldo());Console.WriteLine("Mexicano.Tipo : " +

    Mexicano.Tipo());

    Console.WriteLine("--- Herencia Simple ---");

    Empleado Programador = new Empleado("CarlosSalinas G.", 53);Console.WriteLine("Programador.sNombre : " +

    Programador.sNombre);Console.WriteLine("Programador.iEdad : " +

    Programador.iEdad);Programador.AsignarSueldo(dSueldo);Console.WriteLine("Programador.iSueldo : " +

    Programador.ObtenerSueldo());Console.WriteLine("Programador.Tipo : " +

    Programador.Tipo());}

    }

    Polimorfismo y Funciones VirtualesEl polimorfismo es la funcionalidad que permite a cdigo antiguo invocar cdigo nuevo,tambin permite extender el sistema sin modificar el cdigo existente, esto se lograsobreescribiendo o redefiniendo el cdigo, para lo cual se utilizan funciones virtuales y lapalabra clave override.

    Las funciones abstractas son automaticamente funciones virtuales, las cuales permiten alprogramador usar polimorfismo para hacer su cdigo simple.Virtual significa que cuando una invocacin a funciones miembro, el compilador deberabuscar por el tipo real del objeto y no por el tipo de la referencia, e invocar en base al tipola funcin apropiada.

    using System;public class Persona{

    //Propiedades

    public string sNombre;public int iEdad;//Constructorpublic Persona(string sNombre, int iEdad){

    this.sNombre = sNombre;this.iEdad = iEdad;

    }//Mtodosvirtual public string Tipo(){

    return "Persona";}

    }//Herencia Simple

    public class Empleado : Persona{public Empleado(string sNombre, intiEdad):base(sNombre, iEdad){}

  • 8/8/2019 c# manual en net

    11/94

    override public string Tipo(){return "Empleado";

    }}

    class App{

    //Aplicacinpublic static void Main(){Persona Mexicano = new Persona("Gerado ngeles Nava",

    33);Console.WriteLine("Mexicano.sNombre : " +

    Mexicano.sNombre);Console.WriteLine("Mexicano.iEdad : " +

    Mexicano.iEdad);Console.WriteLine("Mexicano.Tipo : " +

    Mexicano.Tipo());

    Console.WriteLine("--- Arreglo de Objetos ---");

    Empleado[] aProgramadores = new Empleado[2];aProgramadores[0] = new Empleado("Bill Gates", 50);aProgramadores[1] = new Empleado("Eric S. Raymond",

    60);for(int i = 0; i < aProgramadores.Length; i++){

    Console.WriteLine("aProgramadores["+i+"].sNombre : "+ aProgramadores[i].sNombre);

    Console.WriteLine("aProgramadores[" + i + "].iEdad :" + aProgramadores[i].iEdad);

    Console.WriteLine("aProgramadores[" + i + "].Tipo :" + aProgramadores[i].Tipo());

    }}

    }Cuando una funcin es declarada con la palabra reservada override significa que es lamisma funcin que fue declarada en la clase base, si la palabra reservada override seomite el compilador podra asumir que la funcin no est relacionada a la funcin de laclase base y no despacha la funcin virtual (el compilador podra sugerir omitir overrideo agregar new) .

    Cuando existe una funcin virtual el programador puede pasar una referencia a la claseabstracta aunque la clase derivada y el compilador podran escribir cdigo para invocar laversin apropiada de la funcin en tiempo de ejecucin.Por ejemplo, el objeto base object tiene una funcin virtual llamada ToString() queconvierte un objeto a string. Si se invoca la funcin ToString() en un objeto que que nola tiene como versin propia, la versin de la funcin que es parte de la clase objectpodra ser invocada.

    Encapsulacin y VisibilidadEncapsulacin (tambin llamada information hiding), habilidad de un objeto para ocultarsus datos internos o parte interna de sus usuarios y provee una interface que hace laspartes importantes del objeto accesible programaticamente.La encapsulacin provee los lmites entre una interfaz externa y los detalles de suimplementacin interna.Al disear objetos el programador decide que objetos son visibles al usuario y que esprivado dentro del objeto, los detalles que no son visibles al usuario son sealados para serencapsulados en la clase.Razones para encapsular y ocultar:

    El usuario no puede cambiar lo que es privado en el objeto, lo cual reduce la

    oportunidad de que el usuario cambie o dependa de los detalles en el

    http://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Baseclasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Baseclasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Baseclasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethodshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Baseclasshttp://www.canalvisualbasic.net/manual-net/c-sharp/#overridingMethods
  • 8/8/2019 c# manual en net

    12/94

    cdigo, si el usuario hace lode detalles dependientes, los cambios realizadosen el objeto quiz arruinen el cdigo del usuario.

    Los cambios realizados en partes pblicas de un objeto deben permanecercompatibles con la versin previa. Las partes pblicas pueden ser cambiadassin arruinar el cdigo del usuario.

    Los campos privados pueden slo ser accesados desde la clase, los campospblicos pueden ser accesados a travs de cualquier instancia de la clase.

    AbstraccinUna Abstraccin se refiere a como un problema dado es representado en el espacio deprograma.Como desarrollador de clases es necesario pensar en terminos de hacer el mejor diseo deabstraccin para los clientes de clase y permitirles enfocarse a la tarea que deben realizary no escudriar o indagar en los detalles de como funciona la clase, tambin es necesariodeterminar cuales de los miembros de la clase deberan ser accesibles publicamente.Los beneficios de una buena abstraccin, es disearla de manera tal que las modificacionesson minimas, si se conoce bien el problema a resolver facilita determinar que mtodosnecesitara el usuario, tambin ser un sistema fcil de entender y mantener.

    La interfaz de clase es la implementacin de la abstraccin.Plataforma .NETLa solucin Microsoft .NET comprende cuatro componentes fundamentales:

    Servicios de Bloques de Construccin .NET o acceso programtico paraciertos servicios tales como almacenamiento de archivos, calendario ypasaporte .NET el cual es un servicio de verificacin de identidad.

    Dispositivos de Software .NET el cual podra correr sobre nuevosdispositivos Internet.

    La Experiencia de Usuario .NET la cual incluye caractersticas tales comointerfaz natural, agentes de informacin y etiquetas inteligentes es decir

    una tecnologa que automatiza hiperligas para informacin relacionada apalabras y frases en documentos creados por el usuario.

    La Infraestructura .NET la cual comprende la plataforma .NET, MicrosoftStudio .NET, los Servidores Corporativos .NET y Microsoft Windows .NET

    La Infraestructura .NET se refiere a todas las tecnologas que constituyen el nuevoambiente para crear y ejecutar aplicaciones robustas, escalables y distribuidas. La parte de.NET que permite desarrollar estas aplicaciones es la plataforma .NET.La Plataforma .NET consiste de un Lenguaje Comn en Tiempo de Ejecucin (CLR) y laBiblioteca de Clases de la Plataforma .NET algunas veces llamada la Biblioteca de ClasesBase (CBL).El CLR es como una mquina virtual (el cdigo que corre dentro del CLR en ejecucin en un

    ambiente encapsulado y controlado, separados de otros procesos en la mquina) en la cualfuncionan las aplicaciones .NET, todos los lenguajes .NET tienen la biblioteca de clases dela Plataforma .NET a su disposicin.La biblioteca de clases de la Plataforma .NET incluyen soporte para cualquiera de losarchivos de entrada/salida y base de datos de entrada/salida para XML y SOAP.La Plataforma .NET es una plataforma nueva que simplifica la aplicacin del desarrollo enambientes altamente distribuidos de Internet. La Plataforma .NET est diseada paracumplir los siguientes objetivos:

    Proveer un ambiente consistente de programacin orientada a objetos,tanto o si el cdigo objeto es almacenado y ejecutado localmente, o si esejecutado localmente pero distribuido en Internet o si es ejecutadoremotamente.

    Proveer un ambiente de ejecucin de cdigo que minimice la distribucin desoftware y conflictos de versiones.

  • 8/8/2019 c# manual en net

    13/94

    Proveer un ambiente de ejecucin de cdigo que garantice la ejecucin decdigo seguro, incluyendo el cdigo creado por un desconocido o un tercerosemiconfiable.

    Proveer un ambiente de ejecucin de cdigo que elimine los problemas dedesempeo de ambientes de scripts o interpretes.

    Hacer que la experiencia del desarrollador sea consistente a travs de unaamplia variedad de aplicaciones, tal como aplicaciones basadas en Windowsy aplicaciones basadas en Web.

    Construir toda la comunicacin sobre estndares industriales para asegurarque el cdigo basado en la Plataforma .NET pueda integrarse con cualquierotro cdigo.

    La Plataforma .NET consiste de dos componentes principales:

    El Lenguaje Comn en Tiempo de Ejecucin (CLR) el cual es el fundamentode la Plataforma .NET

    La Biblioteca de Clases de la Plataforma .NET, es una coleccin orientada aobjetos de tipos reusables que pueden utilizarse para desarrollaraplicaciones en el rango de aplicaciones tradicionales desde la lnea decomandos o interfaces de usuario grficas (GUI) hasta aplicaciones basadasen las ltimas inovaciones que provee ASP.NET tales como Web Forms yservicios web XML.

    El runtime es una agente que administra el cdigo en tiempo de ejecucin al proveer deserviciones principales como la administracin de memoria, administracin de hilos,tambin implementa tipos estrictos de seguridad y otras formas de verificacin de cdigoque aseguren la seguridad y robustez.El concepto de administracin de cdigo es principio fundamental del runtime. El cdigoque manipular el runtime es conocido como cdigo administrado, mientras que el cdigo

    que no ser manipulado por el runtime es conocido como un cdigo no administrado.La plataforma .NET puede almacenar componentes no administrados que son cargados porel CLR en sus procesos e inicializados por la ejecucin de cdigo administrado de estamanera se crea un ambiente de software que puede explotar tanto caractersitcas decdigo administrado como las del cdigo no administrado..NET Common Language Runtime - CLREl .NET Common Language Runtime (Lenguage comn en tiempo de ejecucin .NET) es unambiente basado en componentes y C# esta diseado para facilitar la creacin decomponentes. Todos los objetos son escritos como componentes y los componentes son elcentro de accin, por ello que reciba el nombre de lenguaje cntrico de componentes(component-centric).Los componentes creados en C# son totalmente auto-describibles y pueden ser utilizadossin un proceso de registro.

    C# ayuda en la creacin de componentes mediante el runtime y framework .NET, loscuales proveen un sistema de tipo unificado en el cual todo puede ser tratado como unobjeto.Caractersticas del CLREL CLR no slo soporta el compilador de C#, tambin el de Visual Basic y C++, el cdigoque generan estos compiladores para ser soportado por CLR es llamado managed code.Algunos de los beneficios que las aplicaciones obtienen del CLR son:

    Integracin de lenguajes a travs del Common Language Specification

    Administracin automatica de memoria, a travs del recolector de basura.

    Manejo de excepciones de lenguajes.

    Seguridad type safety. Soporte de versiones.

  • 8/8/2019 c# manual en net

    14/94

    Modelo Simplificado para la interaccin de componentes.

    El CLR provee los beneficios anteriores, el compilador debe emitir los metadatos en elmanaged code. Los metadatos describen los tipos en el cdigo y son empaquetados en elcdigo ejecutable.El CLR administra la memoria, ejecucin de hilos, ejecucin de cdigo, verificacin de

    cdigo seguro, compilacin y otros servicios. Estas caractersticas son intrnsecas a laadministracin de cdigo que corre sobre el CLR.La seguridad y administracin de componentes depende de un nmero de factores que seincluyen en su origen como Internet red corporativa, computadora local, es decir, quiz oquiz no estn disponibles para desempear operaciones de acceso a archivos, acceso aregistros o funciones sensitivas, an si comienzan a utilizarse en el misma aplicacinactiva.El runtime forza el acceso a cdigo seguro, no es posible acceder a datos personales,sistema de archivos o red.El runtime tambin forza la robustez del cdigo implementando una infraestrucutra estrictade verificacin de cdigo llamado Common Type System (CTS), el cual asegura que toda laadministracin de cdigo se describe as misma. La variedad de compiladores Microsoft yde terceros genera cdigo administrado que conforma el CTS, es decir, que la

    administracin de cdigo puede consumir otros tipos e instancias administradas, mientrasque se forza estrictamente la fidelidad de tipo y seguridad de tipo.La administracin del ambiente del runtime elimina cuestiones de software comunes,liberando por ejemplo recursos que ya no son utilizados.El runtime tambin acelera la productividad del desarrollador, no importa el lenguaje queun programador utilice, puede utilizar las ventajas del runtime, biblioteca de clases, ycomponentes escritos por otros programadores, cualquier compilador que utilice el runtimepuede hacer lo mismo,La interoperabilidad entre cdigo administrado y no administrado permiten a losdesarrolladores continuar utilizando componentes COM y DLLs.El runtime est diseado para incrementar el desempeo, atravs del CLR que proveemuchos servicios estndar, el cdigo administrado nunca es interpretado, unacaracterstica llamadajust-in-time (JIT) permite compilar todo el cdigo administrado paracorrer en el lenguaje nativo de la mquina del sistema o de cualquiera que se esteejecutando. El administrador de memoria elimina las posibilidades de fragmentacin dememoria e incrementa la referencia de localidad de memoria para impulsar el incrementodel desempeo.El runtime soporta aplicaciones del lado del servidor como Microsoft SQL Server eInternet Information Services (IIS), esta infraestructura permite utilizar codigoadministrado para escribir la lgica del negocio..NET Runtime EnvironmentEl Lenguaje Comn en Tiempo de Ejecucin provee los servicios de ejecucin bsica. Lasclases base proveen tipos de datos bsicos, clases coleccin y otras clases generales. Lasclases base son clases para tratar datos y XML. En la parte superior de la arquitectura lasclases exponen servicios web y tratramiento de la intefaz de usuario. Una aplicacin puedehacer invocaciones en cualquier nivel y utilizar clases desde cualquier nivel.Organizacin .NET Framework:

    Servicios Web Interfaz de Usuario

    Datos y XML

    Clases Base

    Lenguaje Comn en Tiempo de Ejecucin

    Ambiente/Entorno de EjecucinEl ambiente o entorno provee un modelo de programacin simple, seguro, soporta deherramientas potentes y ayuda con la distribucin, empaquetado y soporte:

  • 8/8/2019 c# manual en net

    15/94

    Modelo de Programacin Simple, todos los servicios son ofrecidos a travsde un modelo comn que puede ser accedido desde cualquier lenguaje .NETy los servicios pueden ser escritos en cualquier lenguaje .NET, el entorno oambiente en gran parte es un lenguaje agnstico permitiendo la eleccin delenguaje, esto hace el cdigo fcil de reusar para el programador y losproveedores de bibliotecas.

    En el runtime .NETtodos los errores son reportados via excepciones.

    El entorno contiene las Bibliotecas de Clase Base (Base Class Libraries -BCL) las cuales proveen las funciones tradicionales fundadas enbibliotecas en tiempo de ejecucin, la funcionalidad del BCL incluye:

    Clases coleccin, tales como consultas, arreglos, pilas y tablas hash.

    Clases de acceso a bases de datos

    Clases IO (input-output)

    Clases WinForms, para crear interfaces de usuario

    Clases Network

    Fuera de la clase base en tiempo de ejecucin, existen muchos otroscomponentes que controlan la interfaz de usuario (UI) y realizan otrasoperaciones sofisticadas.

    Seguridad, el entorno del runtime .NETest diseado para ser un entornoseguro. El runtime .NET es un entorno administrado o controlado, lo cualsignifica que el runtime administra la memoria por el programador a travsdel recolector de basura.

    El runtime .NET es un entorno verificado, en tiempo de ejecucin el

    entorno verifica que la ejecucin del cdigo sea de tipo segura (type-safe).El sistema de seguridad interactua con el verificador para asegurar que elcdigo realice slo lo que tiene permitido hacer, esto es posibleespecificando un requerimiento de seguridad para una pieza de cdigoespecfica.

    Soporte de herramientas potentes, Microsoft suministra cuatro lenguajes.NET: VB, VC++, C# y JScript. La depuracin en gran medida es enriquecidapor el runtime .NET, el modelo de ejecucin comn hace la depuracin delenguajes simple y directa.

    Distribucin, empaquetado y soporte, El runtime .NETayuda simplificando ladistribucin y en algunos casos no existe el paso tradicional de instalacin,

    porque los paquetes son distribuidos en un formato genrico, un paquetepuede correr en cualquier entorno que soporte .NET, el entorno separa loscomponentes de una aplicacin por lo que una aplicacin slo corre con loscomponentes que son enviados.

    EnsamblajeEn el runtime .NETel mecanismo de empaquetado es el ensamble (assembly), cuando elcdigo es compilado por uno de los compiladores .NET, es convertido a una formaintermedia conocida como IL.El ensamble contiene todos los IL, metadatos y otros archivos requeridos para que unpaquete se ejecute en un paquete completo.Cada ensamble contiene un manifiesto que enumera todos los archivos que estn

    contenidos en el ensamble, controla que tipos y recursos son expuestos fuera del ensambley relaciona las referencias de esos tipos y recursos a los archivos que contienen los tipos yrecursos.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#ilhttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadata
  • 8/8/2019 c# manual en net

    16/94

    El manifiesto tambin lista otros ensambles que dependen de un ensamble.Los ensambles se contienen a s mismo, existe suficiente informacin en el ensamble paraser auto-descrito.Cuando se define un ensamble, el ensamble puede ser contenido en un solo archivo opuede ser dividido entre varios archivos. Utilizando varios archivos podra hacer posible unescenario donde las secciones del ensamble sean descargadas slo como se necesiten.

    Interoperabilidad de LenguajeUna de las metas del runtime .NETes ser un lenguaje agnstico, permitiendo que el cdigosea utilizado y escrito desde cualquier lenguaje, no slo las clases pueden ser escritas enalgn lenguaje .NET como VB.NET y ser invocadas desde otro lenguaje .NET como C#, unaclase que fu escrita en VB.NET puede ser utilizada como una clase base escrita en C# yesa clase podra ser utilizada desde una clase VC++ o JScript, es decir, no importaria enque clase sea escrita una clase.Para hacer lo anterior posible existen algunos obstaculos como las propias caractersticasdel lenguaje, ya que un lenguaje no podra soportar ciertas cosas que otro si las soporte,por ejemplo la sobrecarga de operadores.Para que una clase sea utilizada desde un lenguaje .NET, la clase debe adherir laEspecificacin Comn de Lenguaje (Common Language Specification - CLS) la cualdescribe que caractersticas pueden ser visibles en la interfaz pblica de la clase, por

    ejemplo el CLS prohibe exponer tipos de datos sin signo, porque no todos los lenguajespueden utilizarlos.AtributosEl runtime .NETsoporta atributos personalizables, los cuales son en cierto sentido un lugarpara colocar informacin descriptiva en los metadatos junto con un objeto y entoncesrecuper despus los datos. Los atributos proveen un mecanismo general para hacer estoy son utilizados en exceso en todo el tiempo de ejecucin para almacenar informacin quemodifica como el runtime utiliza las clases.Los atributos son extensibles y permite a los programadores definir atributos y utilizarlos.Los atributos se especifican encerrandolos entre corchetes:[Version("14/09/2005", Comentario="1.0.1.0")]

    Los atributos son anotaciones que se colocan en elementos de cdigo fuente, como

    clases, miembros, parmetros, etc.Los atributos puede ser utilizados para: cambiar el comportamiento del runtime, proveerinformacin acerca de un objeto, llevar informacin organizacional al diseador.El atributo informacin es almacenado con los metadatos del elemento y pueden serfacilmente recuperados en tiempo de ejecucin a travs de un proceso conocido comoreflection.C# utiliza un Atributo Condicional para controlar cuando las funciones miembro soninvocadas.Por convencin los atributos se agregan al final del nombre de una clase, con la finalidadde conocer cuales son clases atributo y cuales son clases normales. Todos los atributosderivan de System.Attribute.

    Procure que el atributo para el elemento sea especfico, utilizando los identificadoressiguientes:

    Identificador Descripcin

    assembly ensamble

    module mdulo

    type clase o estructura

    method mtodo

    property porpiedad

    event evento

    field campoparam parmetro

    http://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#classhttp://www.canalvisualbasic.net/manual-net/c-sharp/#memberhttp://www.canalvisualbasic.net/manual-net/c-sharp/#parametershttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#reflectionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalAttribhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#classhttp://www.canalvisualbasic.net/manual-net/c-sharp/#memberhttp://www.canalvisualbasic.net/manual-net/c-sharp/#parametershttp://www.canalvisualbasic.net/manual-net/c-sharp/#metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#reflectionhttp://www.canalvisualbasic.net/manual-net/c-sharp/#conditionalAttrib
  • 8/8/2019 c# manual en net

    17/94

    return valor de regreso

    Los atributos que son aplicados a ensambles o mdulos deben colocarse despus decualquier clusula using y antes de cualquier cdigo.

    Biblioteca de Clases de la Plataforma .NETLa Biblioteca de Clases de la Plataforma .NET es una coleccin de tipos reutilizables

    integradas en el CLR.Los tipos de la Plataforma .NET permiten llevar a cabo tareas de programacin comunescomo manipulacin de strings, colecciones de datos, conectividad a bases de datos yacceso a archivos.Es posible utilizar la Plataforma .NET para desarrollar los siguientes tipos de aplicaciones yservicios:

    Aplicaciones de consola

    Windows Forms

    Aplicaciones ASP.NET

    Servicios Web XML

    Servicios Windows

    Requerimientos de SoftwareTodo lo que se necesita para desarrollar en C# es el Kit de desarrollo (SDK), del cual solose utilizar el CLR y el compilador de C#.Lenguaje Intermedio y MetadatosMicrosoft desarrollo un lenguaje parecido al lenguaje ensamblador llamado MicrosoftIntermediate Language (MSIL).Para compilar aplicaciones .NET, los compiladores toman el cdigo fuente como entrada yproducen MSIL como salida.MSIL en s es un lenguaje completo con el cual es posible escribir aplicaciones.El managed code generado por el compilador C# no es cdigo nativo porque es un cdigo

    de Lenguaje Intermedio (IL). Este cdigo IL se convierte en la entrada para laadministracin del proceso de ejecucin del CLR. La ventaja final del cdigo IL es que elCPU es independiente, lo cual significa que se necesita un compilador en la mquinadestino para cambiar el cdigo IL en el cdigo nativo.El IL es generado por el compilador, pero no es lo nico que se provee para el runtime, elcompilador tambin genera metadatos acerca del cdigo, los cuales dicen ms al runtimedel cdigo, por ejemplo la definicin de cada tipo. Los metadatos son bibliotecas de tipo,entrada de datos al registry, etc. Los metadatos son empaquetados directamente con elcdigo ejecutable y no en localidades separadas.El IL y los metadatos son colocados en los archivos que extienden el formato PE (PortableExecutable) utilizado para archivos .exe y .dll, cuando se carga el archivo PE el runtimecoloca y extrae los metadatos y el IL de estos.Cuando se compila una aplicacin C# o cualquier aplicacin escrita en un CLS, la aplicacin

    es compilada dentro del MSIL, adems se compila dentro de las instrucciones nativas deCPU cuando la aplicacin es ejecutada por vez primera por el CLR.El proceso es el siguiente:

    Cdigo fuente escrito en C#

    El cdigo fuente es compilado usando el compilador de C# (csc.exe) dentrode un EXE.

    El compilador C# produce como salida el cdigo MSIL y un manifiesto en unaparte de slo lectura del EXE que tiene un encabezado estndar PE (Win32-Portable Executable).

    Cuando el compilador produce o crea la salida tambin importa unafuncin llamada_CorExeMain del runtime .NET.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLRhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLShttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLR
  • 8/8/2019 c# manual en net

    18/94

    Cuando la aplicacin es ejecutada, el sistema operativo carga el PE comouna DLL dependiente tal como la nica que exporta la funcin_CorExeMain(mscoree.dll) justo como lo hace con cualquier PE vlido.

    El sistema operativo carga y entonces salta al punto dentro del PE el cual espuesto ah por el compilador C#.

    El sistema operativo obviamente no puede ejecutar el cdigo MSIL, elpunto de entrada es un pequea parte que salta a la funcin_CorExeMainen mscoree.dll.

    La funcin_CorExeMain comienza la ejecucin del cdigo MSIL que fuecolocado en el PE.

    Dado que el cdigo MSIL no puede ser ejecutado directamente (porque noest un un formato de mquina ejecutable) el CLRcompila el MSIL usandoun compilador just-in-time (JIT o JITter) dentro de instrucciones CPUnativas tal como procesa el MSIL.

    JITersEl managed code generado por C# es el cdigo IL, aunque el cdigo IL es empaquetado enun formato de archivo PE vlido, no es posible ejecutarlo sin convertirlo a un managedcode nativo.Cuando un tipo es cargado, el laoder crea y agrega un stub (pieza pequea) a cadamtodo del tipo, as cuando el mtodo es invocado por vez primera, el stub pasa el controlal JIT.El JIT compila el IL a cdigo nativo y cambia el stub para que apunte al cdigo nativo queest en cache, as las subsecuentes invocaciones podran ejecutar el cdigo nativo.El CLR incluye tres diferentes JITers que pueden ser usados para convertir MSIL en cdigonativo, dependiendo de las circunstancias:

    PreJIT (Generacin de cdigo Install-time), opera como un compiladortradicional, aunque est basado sobre el compilador JIT principal, se ejecutacuando un componente NGWS es intalado y compila el cdigo IL a managedcode nativo.

    La generacin de cdigo en tiempo de instalacin compilar un ensamblecompleto dentro de un cdigo binario de CPU-especifico, tal como lo haceel compilador C++. Un ensamble el cdigo empaquetado que es enviado alcompilador. La compilacin se hace en tiempo de instalacin, cuando elusuario final es menos probable para notificar que el ensamble esta siendocompilado-JIT.

    La ventaja de la generacin de cdigo en tiempo de instalacin, es que

    permite compilar el ensamble completo justo una vez antes de serejecutado. Al ser compilado el ensamble entero no hay preocupacinreferente al desempeo intermitente cada vez que un mtodo en el cdigoes ejecutado por primera vez.

    Al usar esta utilidad depende del tamao del sistema y del ambiente dedistribucin.

    JIT, compilador por default utilizado por el CLR, es un compiladoroptimizado, el cual realiza el anlisis del flujo de datos, administra el cdigonativo como salida.

    El JITter es invocado en tiempo de ejecucin.

    EconoJIT, realiza una conversin muy veloz del IL a managed code nativo

    http://www.canalvisualbasic.net/manual-net/c-sharp/#CLRhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLRhttp://www.canalvisualbasic.net/manual-net/c-sharp/#CLR
  • 8/8/2019 c# manual en net

    19/94

    Tambin es un JITter en tiempo de ejecucin, esta especialmentediseado para sistemas que tienen recursos limitados como memoria. Laprincipal diferencia con un JIIter regular es la incorporacin de algunasinvocaciones code pitching, que permiten al EconoJIT descartar el cdigogenerado o compilado si el sistema comienza a ejecutarse fuera dememoria, siendo el beneficio el reclamo de memoria. La desventaja es que

    si el cdigo espitched(lanzado) es invocado otra vez por lo que debe sercompilado de nuevo.

    Es posible determinar que tipo de JIT esta siendo utilizado y cuanta memoria utiliza atravs de una pequea utilidad llamadaJIT Compiler Manager(jitman.exe), que reside enel directorio bin del directorio de instalacin del NGWS SDK.

    Sistema de Tipo UnificadoEl runtime de .NET hace ms que dar al desarrollador un simple sistema de tipo unificadoque es usado a travs de todos los lenguajes, tambin deja a los lenguajes escribirextensiones de sistema tipo, agregando nuevos tipos que parezcan y actuen como tipos desistemas built.in.El Sistema Virtual de Objetos - VOSLas reglas que se siguen cuando se declaran, utilizan y administran tipos son modeladas

    en el Sistema Virtual de Objetos (Virtual Object System - VOS).El VOS establece una plataforma que permite la integracin de lenguajes y type safety.La base de la arquitectura del runtime es la plataforma que puede describir en cuatroreas:

    VOS Type System, provee un sistema de tipos que intenta soportar laimplementacin completa de una rango amplio de lenguajes deprogramacin.

    Metadata, describe y hace referencia a los tipos definidos por el VOS.

    Common Language Specification - CLS, define el subconjunto de tipos delVOS. Si una biblioteca de clases es soportada por las reglas del CLS,garantiza que la biblioteca de clases pueda ser utilizada por los demslenguajes que implementen el CLS.

    Virtual Execution System - VES, es responsable de la carga y ejecucin delos programas que fueron escritos por el CLR.

    VOS Type SystemEl VOS define tipos que describen valores y especifican un contrato en donde todos losvalores de tipo deben soportar. Existen dos entidades: valores y objetos.Para un valor el tipo describe la representacin de almacenamiento y las operaciones quepuede realizar.Los objetos son ms poderosos porque el tipo es almacenado explicitamente en surepresentacin, cada objeto tiene una identidad que lo distingue de los dems objetos.MetadataEl compilador CLS toma el cdigo fuente como entrada y produce cdigo MSIL para elruntime para compilar a travs de los JITters y ejecutar. Adems se mapea el cdigofuente a secuencias de instrucciones MSIL, el compilador CLS tiene otra tarea importante:envolver metadatos dentro del EXE resultante.Los Metadatos son datos que describen datos.Los metadatos son la coleccin de elementos programticos que constituyen el EXE, comolos tipos declarados y los mtodos implementados.Estos metadatos son similares a los tipos de bibliotecas generadas con componentes COM(Component Object Model).La razn para usar metadatos es simple ya que permiten al runtime .NET conocer entiempo de ejecucin que tipos podran ser almacenados y que mtodos podran serinvocados. Esto permite al runtime configurar apropiadamente el ambiente para mayor

    eficiencia al ejecutar la aplicacin. El significado por el cual estos metadatos sonconsultados es llamado reflection.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#vosTypeSyshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#clshttp://www.canalvisualbasic.net/manual-net/c-sharp/#veshttp://www.canalvisualbasic.net/manual-net/c-sharp/#vosTypeSyshttp://www.canalvisualbasic.net/manual-net/c-sharp/#Metadatahttp://www.canalvisualbasic.net/manual-net/c-sharp/#clshttp://www.canalvisualbasic.net/manual-net/c-sharp/#ves
  • 8/8/2019 c# manual en net

    20/94

    Los metadatos por cada objeto .NET registran toda la informacin que es requerida parausar el objeto, con esta informacin el runtime .NET es capaz de resolver como crearobjetos, invocar funciones miembro o acceder a los datos de un objeto y el compiladorpuede utilizar la informacin para encontrar que objetos estn disponibles y como esutilizado un objeto. La informacin incluye lo siguiente:

    El nombre del objeto Los nombres de todos los campos del objeto y sus tipos

    Los nombres de todas las funciones miembro, incluyendo tipos parmetro ynombres

    Los metadatos tambin permiten a otras herramientas acceder a la informacin detalladaacerca del cdigoExiste un proceso llamado reflection donde el cdigo en tiempo de ejecucin puedeconsultar los metadatos para encontrar que objetos estn disponibles y que funciones ycampos estn presentes en la clase. La reflection est disponible para usuarios finales paradeterminar como son los objetos, bsqueda de atributos o ejecutar mtodos en los que losnombres no son conocidos hasta el tiempo de ejecucin.

    Los metadatos son utilizados para varias tareas:

    Para representar la informacin que el CLR utiliza para localizar y cargarclases.

    Para sacar las instancias de las clases en memoria.

    Para resolver la invocacin de mtodos.

    Para traducir IL a cdigo nativo.

    Para forzar la seguridad.

    El encargado de generar los metadatos es el compilador C#, al pasar el cdigo a IL,emitiendo la informacin binaria de los metadatos en un archivo PE.

    La principal ventaja de la combinacin de los metadatos con el cdigo ejecutable es que lainformacin acerca de los tipos es persistente.Una herramienta que toma ventaja de reflection es el ILDASM (Microsoft .NET FrameworkIL Disassembler), el cual analiza la aplicacin de metadatos fuente y entonces presentainformacin acerca de la aplicacin en la jerarqua del rbol.SeguridadLa faceta ms importante de cualquier ambiente de desarrollo de aplicaciones distribuidases como manejar la seguridad.La seguridad comienza tan pronto como una clase es caragada por el CLR porque la claseloader es parte del esquema de seguridad .NET, la seguridad relacionada a factores talescomo reglas de accesibilidad y requerimientos de consistencia son verificados.Deployment

    La llave para el Deployment de aplicaciones .NET es el concepto de ( ensambles). Losassemblies son paquetes simples de comportamiento semanticamente relacionados queson construidos como un archivo individual o entidades de archivos mltiples.La especificacin de como deploy una aplicacin podra variar ya que se puede tratar de undesarrollo web o aplicacin tradicional de escritorio.El runtime .NET mantiene el rastreo delos archivos y de las versiones de los archivosasociados con una aplicacin. Cualquier aplicacin que es instalada es automticamenteasociada con los archivos que son parte de ese ensamble.Si una aplicacin de instalacin intenta sobre escribir un archivo necesario para otraaplicacin, el runtime .NET es lo bastante inteligente para permitir que la aplicacin deinstalacin, instale los archivos necesarios pero el CLR no elimina las versiones previas deel archivo porque todava son requeridas por la primer aplicacin.Interoperabilidad con cdigo no administrado

    El cdigo no administrado no tiene las ventajas que tiene el cdigo administrado, comorecoleccin de basura, sistema de tipo unificado y metadatos.

  • 8/8/2019 c# manual en net

    21/94

    Cdigo administrado invocando funciones DLL no administradas, cuando laaplicacin necesita una interfaz para una DLL en C y la empresa que escribela DLL no adopta .NET ser necesario invocar esa DLL desde unaaplicacin .NET.

    Cdigo administrado usando componentes COM, es posible lograr estocreando un wrapper .NET para el componente COM, as que el clienteadministrado trabaja con clases .NET

    Cdigo no administrado usando servicios .NET, cuando se desea acceder a.NET desde cdigo no administrado.

    Common Language Specification - CLSEs un conjunto de reglas que un lenguaje debe adherir para crear aplicaciones .NET que seejecutan en el CLR.Un concepto importante relacionado a la CLR es el cdigo administrado, el cdigoadministrado es justo el cdigo que esta ejecutandose bajo el auspicio de la CLR y porconsiguiente comienza a ser controlado por el CLR.El CLS define un subconjunto de tipos del VOS, si una biblioteca de clases sigue las reglasdel CLS esta garantizando ser utilizada por clientes de otro lenguaje de programacin quetambin se adhieren a la CLS.El CLS se refiere a la interoperabilidad entre lenguajes, por lo que es necesario seguir lostipos y caractersticas del CLS, para ello es necesario conocer los tipos primitivos, arreglos,tipos, miembros tipo, mtodos, campos, propiedades, enumeraciones, excepciones,interfaces, eventos, atributos personalizables, delegados, identificadores, etc. que la propiaespecicicacin define.Virtual Execution System - VESEl Sistema Virtual de Ejecucin implementa la VOS y se crea implementando un motor deejecucin (Execution Engine EE). Los componentes de la VES son:

    Lenguaje Intermedio ( Intermediate Language - IL), diseado para serfacilmente traducido a una amplia gama de lenguajes, por lo que el

    compilador C# es capaz de generar el lenguaje intermedio. Carga del Cdigo Administrado (Loading Managed Code), resuelve nombres,

    obtiene clases de la memoria, crea stubs que son necesarios para lacompilacin JIT. La class loaderforza la seguridad.

    Conversin de IL a Cdigo Nativo via JIT, el cdigo del lenguaje intermediono esta diseado como un interprete tradicional bytecode o rbol de cdigo,la conversin del lenguaje intermedio es realmente una compilacin.

    Carga de Metadatos, se encarga de checar la seguridad de tipos y laintegridad de los mtodos.

    Recolector de Basura y Manejo de Excepciones (Garbage Collection), elcodigo administrado premite rastrear el apilado en el runtime, para que el

    runtime entienda el apilado individual de frames un cdigo administradotiene que ser proporcionado por el JITer o por el compilador.

    Servicios de debugging, estos servicios dependeran de la informacinproducida por el compilador del lenguaje fuente y se emiten dos mapas, unmapa del lenguaje fuente de la construccin de direcciones en el flujo deinstrucciones y un mapa de las direcciones de las localidades en el apiladode frames.

    Administracin de Hilos, el VES proprorciona este servicio al cdigoadministrado.

    Tipos de DatosC# soporta el conjunto de tipos de datos usual, para cada tipo de dato que C# soporta,existe una correspondencia tipo de lenguaje comn en tiempo de ejecucin .NETsubyacente.

  • 8/8/2019 c# manual en net

    22/94

    Todos los tipos runtime pueden encontrarse en el namespaceSystem del lenguaje comnen tiempo de ejecucin .NET.

    TipoByte

    sTipo

    runtimeDescripcin

    byte 1 Byte Unsigned byte

    sbyte 1 SByte Signed byte

    short 2 Int16 Signed short

    ushort 2 UInt16 Unsigned short

    int 4 Int32 Signed integer

    uint 4 UInt32 Unsigned int

    long 8 Int64 Signed big integer

    ulong 8 UInt64 Unsigned big integer

    float 4 Single Floating point number

    double 8 double Double-precision floating point number

    decimal 8 Decimal Fixed-precision number

    string String Unicode string

    char Char Unicode character

    bool Boolean Boolean value

    Los tipos de datos son separados en value types y reference types. Los value types sonasignados en estructuras de pilas o en lnea. Los reference types son asignados alaglomerado.Las referencias y tipos de valores son derivados de la ltima clase base objet, de estamanera en caso de que un tipo de valor necesite actuar como un object una envoltura

    hace que el tipo de valor parezca una referencia asignandolo al aglomerado, y los tipos devalores son copiados a estos. La envoltura es marcada por lo que el sistema conoce quecontiene por ejemplo int, a este proceso se le conoce como boxing y el proceso dereversa se le conoce como unboxingLa palabra reservada class es empleada para declarar un tipo referencia (heap allocated),y la palabra reservada struct es empleada para declarar un tipo valor, una estructura esutilizada para objetos ligeros que necesitan actuar como tipos built-in, las clases sonutilizadas en cualquier otro caso.Por ejemplo un tipo int es un valor tipo y un tipo string es un tipo referencias, estotrabajaria as:

    int i = 2005;string s = "Septiembre";

    i 2005

    s o-----------------> Septiembre

    Constantes y Campos Solo LecturaEn C# los valores pueden ser definidos como constantes y para que un valor sea constantesu valor debe ser algo que pueda ser escrito como una constante.public const string sDominio = "informatique.com.mx";

    La restriccin de tipos constantes es que son conocibles en tiempo de compilacin, en vezde ello es posible utilizar el modificador readonly el cual est diseado para aquellas

    situaciones en donde las constantes tienen restriccin.Aplicando el modificador readonly un valor puede ser establecido en el constructor o enuna inicializacin pero no puede ser modificado despus.

    http://www.canalvisualbasic.net/manual-net/c-sharp/#namespaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#boxinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#unboxingConvhttp://www.canalvisualbasic.net/manual-net/c-sharp/#namespaceshttp://www.canalvisualbasic.net/manual-net/c-sharp/#boxinghttp://www.canalvisualbasic.net/manual-net/c-sharp/#unboxingConv
  • 8/8/2019 c# manual en net

    23/94

    Ejemplo Hello World!El cdigo C# puede ser escrito en cualquier editor, tambin puede escribirse con VisualStudio 7.El cdigo C# debe almacenarse en un archivo con extensin .cs

    Para compilar el cdigo C# es necesario tener instalado la Plataforma .NET que incluye elcompilador C#, puede buscar el ejecutable en la ruta:

    C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 csc.exeAsegurese de tener esta ruta en el path para poder ejecutar el compilador desde cualquierubicacin.Para compilar su archivo .cs es necesario abrir la consola (DOS) y escribir el comando csseguido del nombre de su archivo por ejemplo:cd helloworld.cs

    La salida exitosa de la compilacin podra ser as:

    Microsoft (R) Visual C# .NET Compiler version 7.10.6001.4for Microsoft (R) .NET Framework version 1.1.4322Copyright (C) Microsoft Corporation 2001-2002. All rights

    reserved.

    Si existe algn error el compilador lo notificar. El archivo es compilado y ligado ahelloworld.exe, (el archivo .exe generado tendr el nombre del archivo fuente) paraejecutar el programa slo es necesario escribir el nombre del archivo ejecutable.Algo interesante es que es posible especificar el nombre del archivo ejecutable a travs deun switch:

    csc /out:nuevoNombre.exe nombreArchivoFuente.cs

    El siguiente es el ejemplo tpico de los lenguajes de programacin:class HelloWorld{

    public static void Main(){System.Console.WriteLine("Hello World");

    }}El mtodo Main debe estar contenido en la clase y escrito con la primer letra enmayscula. El tipo de este mtodo puede ser void o int. Tambin este mtodo puedeespecificar argumentos:

    public static void Main(string[] args)System es el mbito del namespace en el cual el objeto Console est contenido.

    Es posible importar el namespace en las aplicaciones indicandolo al inicio del cdigo con lapalabra reservada using que es una directiva para el namespace System. Existen msnamespaces en la Plataforma .NET

    using System;Ejemplo Args

    Examinemos el siguiente ejemplo, el cual recibe los argumentos con los que el componentefue invocado:Ejemplo de Args con for:

    using System;class Args{

    public static void Main(string[] args){Console.WriteLine("Argumentos : {0}",

    args.Length);for(int itera = 0; itera < args.Length; itera+

    +)Console.WriteLine("Argumento {0} : {1}",

    itera, args[itera]);

    }}

    http://www.canalvisualbasic.net/manual-net/c-sharp/#forStatementhttp://www.canalvisualbasic.net/manual-net/c-sharp/#forStatement
  • 8/8/2019 c# manual en net

    24/94

    Ejemplo de Args con foreach:using System;class App{

    public static void Main(string[] args){foreach(string input in args){

    Console.WriteLine(input);

    }}}

    using System;, define el namespaceSystem, el cual contiene entre otras laclase Console la cual es utilizada para comunicarse con la lnea decomandos.

    using permite al usuario omitir el namespace al utilizar el tipo al que esreferenciado en este caso System, por lo que en vez de escribir:

    System.Console.WriteLine();

    Solamente se escribe:Console.WriteLine();

    using no puede ser utilizado con un nombre de clase por lo que no espermitido escribir using System.Console

    class Args, Al no existir las funciones globales en C#, se declara una clasellamadaArgs.

    public static void Main(string[] args), La claseArgs contiene unafuncin o mtodoMain(), el cual sirve como punto de partida de laejecucin del componente, este mtodo puede o no ser declarado conargumentos, en este caso es fundamental declarlos porque deseamosprecisamente leer y escribir estos argumentos proporcionados al invocar el

    componente.

    Al ser un mtodo de arranque debe ser declarado con el modificadorstatic porque no est asociado con una instancia de un objeto.

    El mtodo indica que recibe un arreglo de tipo string llamado args

    Console.WriteLine("Argumentos : {0}", args.Length);, invoca elmtodoWriteLine de la clase Console para escribir en la lnea de comandolo que se indica entre los parntesis.

    La primer parte de lo que se encierra entre parntesis es un string dondees necesario destacar que{0}, es una notacin que indica entre llaves unndice que hace referencia a una variable