Spftware

Solo disponible en BuenasTareas
  • Páginas : 9 (2246 palabras )
  • Descarga(s) : 10
  • Publicado : 22 de febrero de 2010
Leer documento completo
Vista previa del texto
struct
Se trata de la forma más versatil de trabajar con fichas de información.
Veamos como se definen y posteriormente comentaremos todos los aspectos relevantes de ellas.
struct [Nombre_de_la_estructura]
{
tipo1 campo1;
tipo2 campo2;
.
.
tipoN campoN;
} [variable];



(:htend:)tipo_union {
};
Nótese que en el código del cliente y delservidor habría que especificar el campo tipo_union_u para acceder a los campos más internos. Asimismo, si uno de los casos tiene asociada una definición void, en C desaparecería directamente esa declaración. Para aclarar el uso del tipo union de XDR, se presenta, a continuación, un ejemplo.
Supóngase que se quiere definir un servicio RPC denominado read, que devuelve un valor Booleano que indica sila operación se realizó con éxito. En caso afirmativo, la función devuelve los datos leídos. El tipo XDR que define el valor devuelto por esa función de servicio podría ser el siguiente:
Nótese que, suponiendo que tenemos una variable de ese tipo llamada resultado, para acceder a los datos habría que especificar lo siguiente:
resultado.read_res_u.datos
codigo de hilos
public classMy_hilo
{
public static void main(String agrs[])
{
t1=new multihola((int)(Math.random()*1000));
t2=new multiholaf((int)(Math.random()*1000));
}
}
class multihola extends Thread
{
public int retardo;
//constructor para almacenar nuestro nombre y el retardo
{
}
public void run()
{
for(int i=1;i> 1;
Console.WriteLine("Ejecutado b = i >> 1;");Console.WriteLine("Valor de b: {0:X}", b);
c = i 1;
Valor de b: 7
Ejecutado b = i (mayor que), = (mayor o igual que), is, == (igual que), != (distinto de) establecen una comparación entre dos valores y devuelven como resultado un valor de tipo boolean (true o false). Veamos un ejemplo:
inti;
intb;
Console.Write("Escribe el valor de i: ");
i=Int32.Parse(Console.ReadLine());Console.Write("Escribe el valor de b: ");
b=Int32.Parse(Console.ReadLine());
Console.WriteLine("i=b));
Console.WriteLine("i==b devuelve: {0}", (i==b));
Console.WriteLine("i!=b devuelve: {0}", (i!=b));
La salida de estas líneas de programa sería la siguiente (en rojo está lo que se ha escrito durante la ejecución de las mismas):
Escribe el valor de i:2
Escribe el valor deb:3
i=b devuelve: False
i==b devuelve: False
i!=b devuelve: True
El resultado es muy obvio cuando se trata con números (o, mejor dicho, con tipos valor). Sin embargo, ¿Qué ocurre cuando utilizamos variables de un tipo referencia?
Circunferencia c = new Circunferencia(4);
Circunferencia d = new Circunferencia(4);
Console.WriteLine("c==d devuelve: {0}", (c==d));
El resultado decomparar c==d sería False. Sí, sí, False. A pesar de que ambos objetos sean idénticos el resultado es, insisto, False. ¿Por qué? Porque una variable de un tipo referencia no retorna internamente un dato específico, sino un puntero a la dirección de memoria donde está almacenado el objeto. De este modo, al comparar, el sistema compara los punteros en lugar de los datos del objeto, y, por lo tanto,devuelve False, puesto que las variables c y d no apuntan a la misma dirección de memoria. Para eso tendríamos que utilizar el método Equals heredado de la clase object (en C#, todas las clases que construyas heredan automáticamente los miembros de la clase base System.Object), así:
Circunferencia c = new Circunferencia(4);
Circunferencia d = new Circunferencia(4);Console.WriteLine("c.Equals(d) devuelve: {0}", c.Equals(d));
Ahora, el resultado sí sería True.
El operador is devuelve un valor boolean al comparar si un objeto (de un tipo referencia) es compatible con una clase. Por ejemplo:
Circunferencia c=new Circunferencia();
Console.WriteLine("El resultado de c is Circunferencia es: {0}", (c is Circunferencia));
La salida de estas dos líneas sería la que sigue:...
tracking img