Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: tamat en 12 de Julio de 2005, 06:49:24 PM

Título: Duda Básica Sobre C#
Publicado por: tamat en 12 de Julio de 2005, 06:49:24 PM
 Se que es una pregunta muy elemental pero me cuesta sacarme el chip de C++ y por más que busco no encuentro la respuesta a esta duda:

Si tengo objeto A y objeto B (de la misma clase) y quiero tener un puntero que pueda apuntar a uno de los dos (se que la palabra puntero está prohibida en C#) como lo hago? Para que pueda acceder a uno de los dos sin importarme cual es.

Es que tengo un array con coordenadas, en cada iteracion se actualizan pero quiero guardar las anteriores, así que pensé en tener dos arrays identicos y en lugar de machacar las coordenadas viejas por las nuevas simplemente alternar, ahora uso uno y luego el otro, así siempre tengo las coordenadas anteriores, pero para eso nada mejor que una variable que apunte al ultimo usado. No quiero hacer copias de los valores constantemente.

Es mucho pedir o la filosofia de C# impide hacer cosas así?

Gracias y perdon si la pregunta es muy estupida.
Título: Duda Básica Sobre C#
Publicado por: ajmendoza en 12 de Julio de 2005, 06:53:16 PM
 
Cita de: "tamat"...tener un puntero que pueda apuntar a uno de los dos (se que la palabra puntero está prohibida en C#) como lo hago?...
[offtopiqueo total]

Tonces ¿qué se utiliza en c# para realizar las veces de punteros? Que me ha asaltao la duda  
Título: Duda Básica Sobre C#
Publicado por: zupervaca en 12 de Julio de 2005, 07:24:20 PM
 si igualas A a B y estas son clases, A tendra una referencia a B, si fueran estructuras se copiaran, es mas, cuando haces: clase B = new clase(); lo que estas haciendo es guardar en B una referencia, espero que haya solucionado tu duda, cuando digo referencia quiero decir puntero que pal caso patates, no obstante tienes la opcion de hacer codigo inseguro (unsafe) y usar el sistema de c o c++, pero no te lo recomiendo ya que para eso usas c o c++  :D

saludos

editado: si quereis mas info mira los links de programacion, al final he puesto uno que tiene un tutorial muy bueno sobre c-sharp
Título: Duda Básica Sobre C#
Publicado por: tamat en 12 de Julio de 2005, 07:45:45 PM
 A poder ser sin unsafe :)
Título: Duda Básica Sobre C#
Publicado por: Haddd en 12 de Julio de 2005, 08:01:47 PM
 Lo cierto es que C# tiene cosas que se echan en falta. Por ejemplo, no puedes heredar de una estructura, lo cual hace imposible heredar de Vector3 de DX.

También cuesta mucho trabajar con la memoria. En DX los vértices no tienen un formato predefinido. Te vuelves loco para poder hacer estos apaños. Y es cierto que puedes utilizar código unsafe, pero se echa de menos un mayor control sobre la memoria.
Título: Duda Básica Sobre C#
Publicado por: Vicente en 12 de Julio de 2005, 08:31:35 PM
 Hola,

no es que yo esté muy suelto con este tema, pero a ver. Si tu tienes algo como:

Object A, B;

A = new Object;
B = A;

Tu lo que tienes son dos referencias (punteros) que apuntan al mismo espacio de memoria.

Si tu tienes dos Arrays de coordenadas A y B (por ejemplo como List pa usar genericos que molan mas :P):

List uso, viejo,  nuevo;

nuevo = "Unas coordenadas"
viejo = "otras coordenadas"
uso = nuevo;

Así tu actualizas las listas nuevo y viejo, y uso es la que apunta a una o a otra. No se si era eso lo que querías... Un saludo!

Vicente

P.D.: pocas cosas útiles vas a poder hacer con C++ que no puedas hacer con C# (si es que hay alguna). Cosas raras y exotéricas con memoria pues seguramente hay muchas, pero útiles pocas.
Título: Duda Básica Sobre C#
Publicado por: zupervaca en 12 de Julio de 2005, 09:43:43 PM
 
Cita de: "tamat"A poder ser sin unsafe :)
en clases el operador = sirve para igualar referencias, eso si no se cambia claro, y en las estructuras el operador = por defecto te copia, el que no puedas derivar de una estructura hace que el acceso al codigo de la misma sea muchisimo mas rapido que en c++ ya que no hay funciones virtuales ni override, aunque otra cosa es que el clr haga que la teoria sea cierta jeje, el ejemplo que ha puesto vicente es perfecto para que lo veas, no obstante te recomiendo hechar un vistazo al link que puse (http://www.programacion.com/tutorial/csharp) por que aqui lo explican todo muy bien y ademas se meten en terminos pijillos

yo llevo poco tiempo con el, cuestion de un par de semanas y es tan facil de hacer cosas con el y tan rapido que creo que deberias de darle una oportunidad ;)

saludos
Título: Duda Básica Sobre C#
Publicado por: tamat en 13 de Julio de 2005, 12:45:19 AM
 de hecho ese es el que estoy siguiendo, pero no está orientado a gente que migra de C++ por lo que algunos puntos quedan descolgados. Gracias a ambos por las respuestas.