Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda Básica Sobre C#

Iniciado por tamat, 12 de Julio de 2005, 06:49:24 PM

« anterior - próximo »

tamat

 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.
Por un stratos menos tenso

ajmendoza

 
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  

zupervaca

 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

tamat

Por un stratos menos tenso

Haddd

 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.

Vicente

 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.

zupervaca

 
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

tamat

 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.
Por un stratos menos tenso






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.