SlideShare una empresa de Scribd logo
Tutorial de estructuras 
Visual Studio .NET 2003 
Personas que lo han encontrado útil: 6 de 8 - Valorar este tema 
Este tutorial presenta la sintaxis y el modo de uso de las estructuras. Asimismo, trata las diferencias 
principales entre clases y estructuras. 
Archivos de ejemplo 
Vea Ejemplo de estructuras para descargar y generar los archivos de ejemplo que se utilizan en este 
tutorial. 
Información adicional 
 struct 
 1.8 Estructuras 
 Gramática de estructuras en C. Gramática 
 Tipos de valor 
 Atributos de C# 
 17. Atributos 
 StructLayoutAttribute (Clase) 
Tutorial 
Este tutorial incluye dos ejemplos. El primer ejemplo muestra cómo declarar y utilizar las estructuras; 
el segundo ilustra la diferencia entre estructuras y clases cuando se pasan instancias a los métodos. 
Esta sección también presenta los siguientes temas: 
 Estructuras frente a clases 
 ¿Montón o pila? 
 Constructores y herencia 
 Atributos en estructuras 
Ejemplo 1 
En este ejemplo, se declara una estructura con tres miembros: una propiedad, un método y un 
campo privado. Se crea una instancia de la estructura y se pone en uso: 
// struct1.cs 
using System; 
struct SimpleStruct 
{ 
private int xval; 
public int X 
{ 
get 
{ 
return xval; 
}
set 
{ 
if (value < 100) 
xval = value; 
} 
} 
public void DisplayX() 
{ 
Console.WriteLine("The stored value is: {0}", xval); 
} 
} 
class TestClass 
{ 
public static void Main() 
{ 
SimpleStruct ss = new SimpleStruct(); 
ss.X = 5; 
ss.DisplayX(); 
} 
} 
Resultado 
The stored value is: 5 
Estructuras frente a clases 
Las estructuras pueden parecer muy similares a las clases, pero existen importantes diferencias que 
se deben tener en cuenta. En primer lugar, las clases son tipos de referencia mientras que las 
estructuras son tipos de valor. Mediante las estructuras, se pueden crear objetos que se comportan 
como los tipos integrados y aprovechar sus beneficios. 
¿Montón o pila? 
Cuando se realiza una llamada con el operador New sobre una clase, se asigna espacio en el 
montón. Sin embargo, cuando se crea una instancia de una estructura, el espacio se asigna en la 
pila. De esta forma, se consigue mejorar el rendimiento. Además, a diferencia de las clases, no 
tendrá que tratar con referencias a instancias de estructuras. Se trabaja directamente con la 
instancia de la estructura. Debido a esto, cuando se pasa una estructura a un método, se pasa por 
valor en vez de como una referencia. 
Ejemplo 2 
Este ejemplo muestra que cuando una estructura se pasa a un método, lo que se pasa realmente es 
una copia de la estructura; sin embargo, cuando se pasa una instancia de una clase, lo que se pasa 
es una referencia. 
// struct2.cs 
using System; 
class TheClass 
{ 
public int x; 
}
struct TheStruct 
{ 
public int x; 
} 
class TestClass 
{ 
public static void structtaker(TheStruct s) 
{ 
s.x = 5; 
} 
public static void classtaker(TheClass c) 
{ 
c.x = 5; 
} 
public static void Main() 
{ 
TheStruct a = new TheStruct(); 
TheClass b = new TheClass(); 
a.x = 1; 
b.x = 1; 
structtaker(a); 
classtaker(b); 
Console.WriteLine("a.x = {0}", a.x); 
Console.WriteLine("b.x = {0}", b.x); 
} 
} 
Resultado 
a.x = 1 
b.x = 5 
Descripción del código 
El resultado del ejemplo muestra que, cuando se pasa la instancia de clase al método classtaker, 
sólo cambia el valor del campo de la clase. Sin embargo, el campo de una estructura no cambia al 
pasar su instancia al método structtaker. Esto es debido a que lo que se pasa al 
método structtaker es una copia de la estructura mientras que lo que se pasa al 
método classtaker es una referencia a la clase. 
Constructores y herencia 
Las estructuras pueden declarar constructores, pero deben utilizar parámetros. Es un error declarar 
un constructor predeterminado (sin parámetros) para una estructura. Los miembros de una 
estructura no pueden tener inicializadores. Siempre existe un constructor predeterminado que 
inicializa los miembros de la estructura con sus valores predeterminados. 
Cuando se crea un objeto struct mediante el operador new, se crea y se llama al constructor 
apropiado. A diferencia de las clases, se pueden crear instancias de las estructuras sin utilizar el 
operador New. Si no se utiliza New, los campos permanecerán sin asignar y el objeto no se podrá 
utilizar hasta haber inicializado todos los campos.
A diferencia de las clases, para las estructuras no existe herencia. Una estructura no puede heredar 
de otra estructura o clase, ni puede ser la base de una clase. Sin embargo, las estructuras heredan 
de la clase base object. Una estructura puede implementar interfaces del mismo modo que las 
clases. Éste es un fragmento de código de una estructura que implementa una interfaz: 
interface IImage 
{ 
void Paint(); 
} 
struct Picture : IImage 
{ 
public void Paint() 
{ 
// painting code goes here 
} 
private int x, y, z; // other struct members 
} 
Atributos en estructuras 
Mediante los atributos, es posible personalizar cómo se organizan las estructuras en la memoria. 
Por ejemplo, se puede crear lo que se conoce en C/C++ como unión mediante los 
atributos StructLayout(LayoutKind.Explicit) y FieldOffset. 
using System.Runtime.InteropServices; 
[StructLayout(LayoutKind.Explicit)] 
struct TestUnion 
{ 
[FieldOffset(0)] 
public int i; 
[FieldOffset(0)] 
public double d; 
[FieldOffset(0)] 
public char c; 
[FieldOffset(0)] 
public byte b1; 
} 
En el segmento de código anterior, todos los campos de TestUnion comienzan en la misma 
ubicación de la memoria. 
A continuación se da otro ejemplo donde los campos comienzan en diferentes ubicaciones 
establecidas de manera explícita: 
using System.Runtime.InteropServices; 
[StructLayout(LayoutKind.Explicit)] 
struct TestExplicit 
{ 
[FieldOffset(0)] 
public long lg; 
[FieldOffset(0)] 
public int i1; 
[FieldOffset(4)]
public int i2; 
[FieldOffset(8)] 
public double d; 
[FieldOffset(12)] 
public char c; 
[FieldOffset(14)] 
public byte b1; 
} 
Los dos campos int, i1 e i2, comparten las mismas posiciones de memoria que lg. Esta clase de 
control sobre la organización de una estructura es útil cuando se utilizan llamadas de la plataforma. 
Conclusión 
Las estructuras son sencillas de utilizar y pueden resultar muy útiles en ocasiones. Simplemente, 
tenga en cuenta que se crean en la pila y que no se utilizan referencias a ellas, sino que se trata 
directamente con ellas. Siempre que necesite un tipo que se utilice a menudo y que trate con 
valores de datos, las estructuras constituyen una excelente opción.

Más contenido relacionado

PDF
Aprendiendo objetos en c++
PPTX
Clases abstractas e interfaces (AlexandraPerez)
PPTX
Programación 3: clases derivadas y polimorfismo
PDF
Programación 3: Clases y objetos en Java
KEY
2 POO Presentación
PPTX
Programación 1: modularización
DOCX
Datos Previos
Aprendiendo objetos en c++
Clases abstractas e interfaces (AlexandraPerez)
Programación 3: clases derivadas y polimorfismo
Programación 3: Clases y objetos en Java
2 POO Presentación
Programación 1: modularización
Datos Previos

La actualidad más candente (16)

DOCX
Datos Previos
PPT
Net1 oop vbnet
PDF
Definición de clases en POO
PPT
Constructor Y Destructor
DOCX
Definiciones taller 8 agost
PPTX
Constructores en java(grupo 8)
DOCX
Herencia y polimorfismo unidad 5 semestre 2
PPTX
Presentacion de clases en c#
PPTX
3- Clases y Objetos
PDF
Programación orientada a objetos (I)
PPTX
Constructores en Java
 
PDF
Programación orientada a objetos con c++
DOCX
Contructores en java(grupo 8)
PDF
PROGRAMACIÓN ORIENTADA A OBJETOS
Datos Previos
Net1 oop vbnet
Definición de clases en POO
Constructor Y Destructor
Definiciones taller 8 agost
Constructores en java(grupo 8)
Herencia y polimorfismo unidad 5 semestre 2
Presentacion de clases en c#
3- Clases y Objetos
Programación orientada a objetos (I)
Constructores en Java
 
Programación orientada a objetos con c++
Contructores en java(grupo 8)
PROGRAMACIÓN ORIENTADA A OBJETOS
Publicidad

Destacado (20)

PPTX
Mark zuckerberg
PPTX
Las alergias
DOCX
Diario de camapo 1
PPTX
Diferencias y semejanzas del correo electronico y postal
DOCX
Lección 7 problemas de tablas conceptuales
PPT
Tecnología y educación
PDF
Copia de presntacion isamara1
PPTX
CONCEPTOS BASICOS DE REDES E INTERNET
PPT
ensayo
DOC
Reporte de práctica en winqsb y en documento (poisson yexponencial) equipo 4
PPT
UTILES ANTIGUOS
PPTX
Portafolio
PDF
Hamburgensien digital – Goobi an der Stabi Hamburg
PPTX
Pensar históricamente
DOCX
Diario de camapo 1
PPTX
Noticias
PPTX
Valores en pre escolar
PDF
Datensammlung SocialLab 210913
DOCX
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPS
PDF
Lunch business im neuen format - Vermarktungsideen für Immobilien
Mark zuckerberg
Las alergias
Diario de camapo 1
Diferencias y semejanzas del correo electronico y postal
Lección 7 problemas de tablas conceptuales
Tecnología y educación
Copia de presntacion isamara1
CONCEPTOS BASICOS DE REDES E INTERNET
ensayo
Reporte de práctica en winqsb y en documento (poisson yexponencial) equipo 4
UTILES ANTIGUOS
Portafolio
Hamburgensien digital – Goobi an der Stabi Hamburg
Pensar históricamente
Diario de camapo 1
Noticias
Valores en pre escolar
Datensammlung SocialLab 210913
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPS
Lunch business im neuen format - Vermarktungsideen für Immobilien
Publicidad

Similar a Tutorial de estructuras c# (20)

PPTX
Leguaje de programacion C#
DOCX
Datos previos
PPTX
Metodos Constructor Y Destructor
PPTX
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
DOCX
Manual c# 2
DOCX
Manual de c#
DOCX
manual de C#
PPT
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
PPTX
Arquitectura N-Capas y ADo.NET
PPTX
Conceptos basicos POO
PPT
programacion orientada a objetos
PPTX
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
DOCX
Los tipos de un espacio de nombres
PPT
PPTX
Programacion
PDF
Variables y metodos de instancia
PDF
Introduccion
PDF
Introduccion
DOCX
Tarea 5
PDF
Proyecto en android completado
Leguaje de programacion C#
Datos previos
Metodos Constructor Y Destructor
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Manual c# 2
Manual de c#
manual de C#
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Arquitectura N-Capas y ADo.NET
Conceptos basicos POO
programacion orientada a objetos
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
Los tipos de un espacio de nombres
Programacion
Variables y metodos de instancia
Introduccion
Introduccion
Tarea 5
Proyecto en android completado

Más de elidetjc (20)

PPTX
Programa de eclipse
DOCX
Codigos
PPTX
Programa 2
DOCX
Programa 1
DOCX
Tutorial
DOCX
Enmuladores
DOCX
Preguntas 60
DOCX
Examen de diagnostico_de_moviles
PPTX
Joselyn lizbeth balderas_aguirre
DOCX
Examen de diagnostico_de_moviles_2_22
DOCX
Examen de diagnostico_de_moviles2
DOCX
Preguntas602
PPTX
Presentacion de power_de_emuladores2
PPTX
Ejem8
PPTX
sooooooooooooooooooffff
PPTX
software
PPTX
Ejem5
PPTX
Loo toy
DOCX
Cuestionario prgts
PPTX
Ejemplo 4
Programa de eclipse
Codigos
Programa 2
Programa 1
Tutorial
Enmuladores
Preguntas 60
Examen de diagnostico_de_moviles
Joselyn lizbeth balderas_aguirre
Examen de diagnostico_de_moviles_2_22
Examen de diagnostico_de_moviles2
Preguntas602
Presentacion de power_de_emuladores2
Ejem8
sooooooooooooooooooffff
software
Ejem5
Loo toy
Cuestionario prgts
Ejemplo 4

Último (11)

PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Implementación equipo monitor12.08.25.pptx
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Fundamentos de Python - Curso de Python dia 1
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
sistemas de informacion.................
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Conceptos basicos de Base de Datos y sus propiedades
Implementación equipo monitor12.08.25.pptx
AutoCAD Herramientas para el futuro, Juan Fandiño
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Fundamentos de Python - Curso de Python dia 1
Derechos_de_Autor_y_Creative_Commons.pptx
sistemas de informacion.................
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA

Tutorial de estructuras c#

  • 1. Tutorial de estructuras Visual Studio .NET 2003 Personas que lo han encontrado útil: 6 de 8 - Valorar este tema Este tutorial presenta la sintaxis y el modo de uso de las estructuras. Asimismo, trata las diferencias principales entre clases y estructuras. Archivos de ejemplo Vea Ejemplo de estructuras para descargar y generar los archivos de ejemplo que se utilizan en este tutorial. Información adicional  struct  1.8 Estructuras  Gramática de estructuras en C. Gramática  Tipos de valor  Atributos de C#  17. Atributos  StructLayoutAttribute (Clase) Tutorial Este tutorial incluye dos ejemplos. El primer ejemplo muestra cómo declarar y utilizar las estructuras; el segundo ilustra la diferencia entre estructuras y clases cuando se pasan instancias a los métodos. Esta sección también presenta los siguientes temas:  Estructuras frente a clases  ¿Montón o pila?  Constructores y herencia  Atributos en estructuras Ejemplo 1 En este ejemplo, se declara una estructura con tres miembros: una propiedad, un método y un campo privado. Se crea una instancia de la estructura y se pone en uso: // struct1.cs using System; struct SimpleStruct { private int xval; public int X { get { return xval; }
  • 2. set { if (value < 100) xval = value; } } public void DisplayX() { Console.WriteLine("The stored value is: {0}", xval); } } class TestClass { public static void Main() { SimpleStruct ss = new SimpleStruct(); ss.X = 5; ss.DisplayX(); } } Resultado The stored value is: 5 Estructuras frente a clases Las estructuras pueden parecer muy similares a las clases, pero existen importantes diferencias que se deben tener en cuenta. En primer lugar, las clases son tipos de referencia mientras que las estructuras son tipos de valor. Mediante las estructuras, se pueden crear objetos que se comportan como los tipos integrados y aprovechar sus beneficios. ¿Montón o pila? Cuando se realiza una llamada con el operador New sobre una clase, se asigna espacio en el montón. Sin embargo, cuando se crea una instancia de una estructura, el espacio se asigna en la pila. De esta forma, se consigue mejorar el rendimiento. Además, a diferencia de las clases, no tendrá que tratar con referencias a instancias de estructuras. Se trabaja directamente con la instancia de la estructura. Debido a esto, cuando se pasa una estructura a un método, se pasa por valor en vez de como una referencia. Ejemplo 2 Este ejemplo muestra que cuando una estructura se pasa a un método, lo que se pasa realmente es una copia de la estructura; sin embargo, cuando se pasa una instancia de una clase, lo que se pasa es una referencia. // struct2.cs using System; class TheClass { public int x; }
  • 3. struct TheStruct { public int x; } class TestClass { public static void structtaker(TheStruct s) { s.x = 5; } public static void classtaker(TheClass c) { c.x = 5; } public static void Main() { TheStruct a = new TheStruct(); TheClass b = new TheClass(); a.x = 1; b.x = 1; structtaker(a); classtaker(b); Console.WriteLine("a.x = {0}", a.x); Console.WriteLine("b.x = {0}", b.x); } } Resultado a.x = 1 b.x = 5 Descripción del código El resultado del ejemplo muestra que, cuando se pasa la instancia de clase al método classtaker, sólo cambia el valor del campo de la clase. Sin embargo, el campo de una estructura no cambia al pasar su instancia al método structtaker. Esto es debido a que lo que se pasa al método structtaker es una copia de la estructura mientras que lo que se pasa al método classtaker es una referencia a la clase. Constructores y herencia Las estructuras pueden declarar constructores, pero deben utilizar parámetros. Es un error declarar un constructor predeterminado (sin parámetros) para una estructura. Los miembros de una estructura no pueden tener inicializadores. Siempre existe un constructor predeterminado que inicializa los miembros de la estructura con sus valores predeterminados. Cuando se crea un objeto struct mediante el operador new, se crea y se llama al constructor apropiado. A diferencia de las clases, se pueden crear instancias de las estructuras sin utilizar el operador New. Si no se utiliza New, los campos permanecerán sin asignar y el objeto no se podrá utilizar hasta haber inicializado todos los campos.
  • 4. A diferencia de las clases, para las estructuras no existe herencia. Una estructura no puede heredar de otra estructura o clase, ni puede ser la base de una clase. Sin embargo, las estructuras heredan de la clase base object. Una estructura puede implementar interfaces del mismo modo que las clases. Éste es un fragmento de código de una estructura que implementa una interfaz: interface IImage { void Paint(); } struct Picture : IImage { public void Paint() { // painting code goes here } private int x, y, z; // other struct members } Atributos en estructuras Mediante los atributos, es posible personalizar cómo se organizan las estructuras en la memoria. Por ejemplo, se puede crear lo que se conoce en C/C++ como unión mediante los atributos StructLayout(LayoutKind.Explicit) y FieldOffset. using System.Runtime.InteropServices; [StructLayout(LayoutKind.Explicit)] struct TestUnion { [FieldOffset(0)] public int i; [FieldOffset(0)] public double d; [FieldOffset(0)] public char c; [FieldOffset(0)] public byte b1; } En el segmento de código anterior, todos los campos de TestUnion comienzan en la misma ubicación de la memoria. A continuación se da otro ejemplo donde los campos comienzan en diferentes ubicaciones establecidas de manera explícita: using System.Runtime.InteropServices; [StructLayout(LayoutKind.Explicit)] struct TestExplicit { [FieldOffset(0)] public long lg; [FieldOffset(0)] public int i1; [FieldOffset(4)]
  • 5. public int i2; [FieldOffset(8)] public double d; [FieldOffset(12)] public char c; [FieldOffset(14)] public byte b1; } Los dos campos int, i1 e i2, comparten las mismas posiciones de memoria que lg. Esta clase de control sobre la organización de una estructura es útil cuando se utilizan llamadas de la plataforma. Conclusión Las estructuras son sencillas de utilizar y pueden resultar muy útiles en ocasiones. Simplemente, tenga en cuenta que se crean en la pila y que no se utilizan referencias a ellas, sino que se trata directamente con ellas. Siempre que necesite un tipo que se utilice a menudo y que trate con valores de datos, las estructuras constituyen una excelente opción.