Beruflich Dokumente
Kultur Dokumente
Estructuras
Concepto de estructura
Una estructura es un tipo especial de clase pensada para representar objetos ligeros. Es decir, que ocupen poca memoria y deban ser manipulados con velocidad, como objetos que representen puntos, fechas, etc. Ejemplos de estructuras incluidas en la BCL son la mayora de los tipos bsicos (excepto string y object), y de hecho las estructuras junto con la redefinicin de operadores son la forma ideal de definir nuevos tipos bsicos a los que se apliquen las mismas optimizaciones que a los predefinidos.
Lo que se mostrar por pantalla ser 10. Esto se debe a que el valor de x modificado es el de p2, que como es una copia de p los cambios que se le hagan no afectarn a p. Sin embargo, si Punto hubiese sido definido como una clase entonces s que se hubiese mostrado por pantalla 100, ya que en ese caso lo que se habra copiado en p2 habra sido una referencia a la misma direccin de memoria dinmica referenciada por p, por lo que cualquier cambio que se haga en esa zona a travs de p2 tambin afectar a p. De lo anterior se deduce que la asignacin entre objetos de tipos estructuras es mucho ms lenta que la asignacin entre objetos de clases, ya que se ha de copiar un objeto completo y no solo una referencia. Para aliviar esto al pasar objetos de tipos estructura como parmetros, se da la posibilidad de pasarlos como parmetros por referencia (modificador ref) o parmetros de salida (out) en vez de como parmetros de entrada. Todas las estructuras derivan implcitamente del tipo System.ValueType, que a su vez deriva de la clase primigenia System.Object. ValueType tiene los mismos miembros que su padre, y la nica diferencia sealable entre ambos es que en ValueType se ha redefinido Equals() de modo que devuelva true si los objetos comparados tienen el mismo valor en todos sus campos y false si no. Es decir, la comparacin entre estructuras con Equals() se realiza por valor. Respecto a la implementacin de la igualdad en los tipos definidos como estructuras, tambin es importante tener muy en cuenta que el operador == no
es en principio aplicable a las estructuras que defina el programador. Si se desea que lo tenga ha de drsele explcitamente una redefinicin al definir dichas estructuras.
Fuente: http://www.devjoker.com/print/Tutorial-C/161/Tutorial-C.aspx