CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: x_reaccion en Martes 17 de Julio de 2007, 08:13
Título: Punteros De Clases Y Estructuras
Publicado por: x_reaccion en Martes 17 de Julio de 2007, 08:13
Hola
Se me presenta un problema al momento de crear un puntero de una estructura o clase que creo en C#, miren el siguiente ejemplo de una estructura.
Código: Text
public struct worth
{
public worth(IntPtr hnD, char[] info, params object[] @params)
{
_hnd = hnD;
_params = @params;
_info = info;
}
public IntPtr _hnd;
public object[] _params;
public char[] _info;
}
Al caso, intentando declarar una variable de la estructura worth como un puntero(worth* worth) me sale el siguiente error "No se puede adquirir la dirección, obtener el tamaño ni declarar un puntero a un tipo administrado".
Terminando mi pregunta es :
¿Se puede declarar un puntero de una clase o estructura creada en C#(.NET) o es posible solamente creando una librería de tipos con la clase y:ó estructura en C/++ ?
Título: Re: Punteros De Clases Y Estructuras
Publicado por: Neopro en Martes 17 de Julio de 2007, 17:37
Me tope con el mismo problema, es que C# no permite crear structs de tipos creados por uno mismo, tu ahi lo que haces es crear un struct del mismo tipo, del cual estás definiendo, o sea antes de terminar el struct, ya creas otro igual dentro y eso no es posible. Como tampoco es posible crear un struct con otros struct creados por ti mismo.
Eso lo use para llamar a una DLL de C++ y aun no le encuentro solucion, lo que entiendo yo es que no se puede hacer y te aconsejo que uses clases, pero es mas complejo.
Intenta hacerlo de otra manera.
:(
Título: Re: Punteros De Clases Y Estructuras
Publicado por: x_reaccion en Martes 17 de Julio de 2007, 20:35
Entiendo, gracias por responder Neopro, esto se esta poniendo malo :lol: , pero bueno supongo que abra otro camino, estube leyendo sobre las palabras clave "ref" y "out" sirven para pasar parametros.
¿ref y out pueden sustituir un puntero?
Título: Re: Punteros De Clases Y Estructuras
Publicado por: Neopro en Martes 17 de Julio de 2007, 21:14
No estoy seguro si puedan sustituir a un puntero, pero si funcionan perfectamente. Sobretodo cuando el codigo es no seguro.
El parámetro ref en una variable, obtiene un valor de retorno. Y el parametro out envía un valor. Supongo que estás trabajando con una DLL de C++.
Y si yo mientras no encuentre solucion al reemplazo de los structs, tuve que dejar en espera lo que estoy haciendo. El manejo de estructuras en C# es mucho mas cerrado, que en C++, por ejemplo, en C++ estructuras y clases son lo mismo, en C# se distinguen claramente.