InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial C#
Introduccion a C#
Programacion con C#
Fundamentos de C#
Operadores
Instrucciones
Estrcuturas de control.
Definición de clases
Creación de objetos
Herencia y métodos virtuales
Polimorfismo
Ocultación de miembros
Miembros de tipo
Encapsulación
Espacios de nombres
Importación de espacios de nombres
Espacio de nombres distribuidos
Variables y tipos de datos
Tablas unidimensionales
Tablas multidimensionales
La clase System.Array
Cadenas de texto
Constantes
Orden de inicialización de variables
Métodos
Métodos externos
Constructores
Destructores
Propiedades
Indizadores
Redefinición de operadores
Delegados y eventos
La clase MulticastDelegate
Llamadas asíncronas
Implementación interna de los delegados
Eventos
Estructuras
Boxing y unboxing
Constructores de estructuras
Enumeraciones
Interfaces
Excepciones
Otras instrucciones
Atributos
Definición de nuevos atributos
Lectura de atributos en tiempo de ejecución
Atributos de compilación
Pseudoatributos
Código inseguro
Definición de punteros
Manipulación de punteros
Operadores relacionados con código inseguro
Fijación de variables apuntadas
Novedades de C# 2.0
Genéricos
Tipos parciales
Iteradores
Mejoras en la manipulación de delegados
Tipos anulables
Modificadores de visibilidad de bloques get y set
Clases estáticas
Referencias a espacios de nombres
Supresión temporal de avisos
Atributos condicionales
Incrustación de tablas en estructuras
Modificaciones en el compilador
También puedes ver ...
SubVersion y Visual Studio
Encriptación con AES Rijndael - Ejemplo
TripleDES - Un ejemplo practico en C#
Insertar una marca de agua en documentos PDF
Serialización: XmlSerializer y BinaryFormater
Handler para manipular imagenes
Conversiones de tipos personalizadas (VB y C#)
Compresión por gzip y deflate
La página Web que está abriendo contiene tanto elementos seguros como no seguros.
Cómo insertar un fichero .xml en un campo de tipo XML de SQL server 2005 o 2008


Orden de inicialización de variables

    Para deducir el orden en que se inicializarán las variables de un tipo de dato basta saber cuál es el momento en que se inicializa cada una y cuando se llama a los constructores:

  • Los campos estáticos sólo se inicializan la primera vez que se accede al tipo al que pertenecen, pero no en sucesivos accesos. Estos accesos pueden ser tanto para crear objetos de dicho tipo como para acceder a sus miembros estáticos. La inicialización se hace de modo que en primer lugar se dé a cada variable el valor por defecto correspondiente a su tipo, luego se dé a cada una el valor inicial especificado al definirlas, y por último se llame al constructor del tipo. Un constructor de tipo es similar a un constructor normal sólo que en su código únicamente puede accederse a miembros static (se verá en el Tema 8: Métodos)

  • Los campos no estáticos se inicializan cada vez que se crea un objeto del tipo de dato al que pertenecen. La inicialización se hace del mismo modo que en el caso de los campos estáticos, y una vez terminada se pasa a ejecutar el código del constructor especificado al crear el objeto. En caso de que la creación del objeto sea el primer acceso que se haga al tipo de dato del mismo, entonces primero se inicializarán los campos estáticos y luego los no estáticos.

  • Los parámetros se inicializan en cada llamada al método al que pertenecen con los valores especificados al llamarlo.

  • Las variables locales se inicializan en cada llamada al método al cual pertenecen pero tras haberse inicializado los parámetros definidos para el mismo. Si no se les da valor inicial no toman ninguno por defecto, considerándose erróneo todo acceso de lectura que se haga a las mismas mientras no se les escriba algún valor.

    Hay que tener en cuenta que al definirse campos estáticos pueden hacerse definiciones cíclicas en las que el valor de unos campos dependa del de otros y el valor de los segundos dependa del de los primeros. Por ejemplo:


class ReferenciasCruzadas
{
 static int a = b + 1;
 static int b = a + 1;
 
 public static void Main()
 {
  System.Console.WriteLine("a = {0}, b = {1}", a, b);
 }
}

    Esto sólo es posible hacerlo al definir campos estáticos y no entre campos no estáticas o variables locales, ya que no se puede inicializar campos no estáticos en función del valor de otros miembros no estáticos del mismo objeto porque el objeto aún no estaría inicializado, y no se pueden inicializar variables locales en función del valor de otras variables locales definidas más adelante porque no se pueden leer variables no inicializadas. Además, aunque las constantes sean implícitamente estáticas tampoco puede hacerse definiciones cíclicas entre constantes.

    En primer lugar, hay que señalar que escribir un código como el del ejemplo anterior no es un buen hábito de programación ya que dificulta innecesariamente la legibilidad del programa. Aún así, C# admite este tipo de códigos y para determinar el valor con que se inicializarán basta tener en cuenta que siempre se inicializan primero todos los campos con sus valores por defecto y luego se inicializan aquellos que tengan valores iniciales con dichos valores iniciales y en el mismo orden en que aparezcan en el código fuente. De este modo, la salida del programa de ejemplo anterior será:

 a = 1, b = 2

    Nótese que lo que se ha hecho es inicializar primero a y b con sus valores por defecto (0 en este caso), luego calcular el valor final de a y luego calcular el valor final de b. Como b vale 0 cuando se calcula el valor final de a, entonces el valor final de a es 1; y como a vale 1 cuando se calcula el valor final de b, entonces el valor final de b es 2.


Inicio | Tutorial C# ConstantesTutorial C#Métodos Versión para imprimir Foros de consulta

 
chupemela malparido por sobomaster
Respuesta recibida el [12/03/2010 09:09:58]
que estupidez


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial C# ConstantesTutorial C#Métodos Versión para imprimir

Orden de inicialización de variables
Autor: José Antonio González Seco
Visitas: 14327 Fecha de publicación: 11/10/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 111 | Comentarios: 3 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 812 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 767 | Comentarios: 3 | Archivo: Articulos
Visitas: 3185 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14575 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1502 | Comentarios: 3 | Archivo: Articulos
Visitas: 697 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2035 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 62 10/02/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 127 12/01/2010
certificacion cesantias porvenir por martha perez ... [Actualidad] 6 04/03/2010
cerificado fondo horizonte de pensiones y cesantias por carlos fideligno torres herrera ... [Actualidad] 148 18/01/2010
certificado de afiliacion por EDDY ... [Actualidad] 0 14/03/2010
Cursores por nopodes ... [ORACLE] 0 14/03/2010
peticion urgente mi nombre es juan pablo osorio cardona cc 71115218 por juancho ... [Actualidad] 0 14/03/2010
peticion por juancho ... [Actualidad] 0 14/03/2010
estrato de pencion por carlos antonio mateus gomez ... [Actualidad] 0 14/03/2010
quiero aprender c# por alcapego ... [C#] 4 16/02/2008
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 140 26/01/2010
certificado de penciones y cesantias por fredy ... [Actualidad] 2 29/01/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
11/10/2006 Métodos    forma parte de...Tutorial C#
13/10/2006 Constructores    forma parte de...Tutorial C#
25/08/2007 Variables en Transact SQL    forma parte de...Tutorial de Transact SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
14/07/2007 Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES
21/11/2007 Desencriptar Texto y variables con .NET VB y C# (segunda parte)
13/08/2007 Reiniciar un campo identity en SQL Server
01/06/2007 Autogenerado ESSALUD (Solución)

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]