Diferencias Entre Java y C#
Diferencias Entre Java y C#
Diferencias Entre Java y C#
Sistemas de Tipos
Tipos: En java existen solo los tipos bsicos y objetos, en C# adems de estos existen las estructuras inmutables(los valores de los campos y propiedades no se pueden modificar) Declaracin de arrays: En java se puede declarar un array de dos formas: Int notas[]; int [] notas; En C# solo de una: Int [] notas; La instancia seria de la misma manera: Notas = new int [9]; String: Tanto en ava como en C# son inmutables pero en C# para comparar dos !trin" no es necesario usar e#uals$ En java seria Nombre1.equals(nombre2); Declaracin de constantes: En java se usa final para declarar constantes tanto en tiempo de compilaci%n como de ejecuci%n, sin embar"o en C# se usan dos nombres diferentes, const para asi"nar valores en tiempo de compilaci%n y readonly para tiempo de ejecuci%n$ Instrucciones de Control Bucle for-earch En C# se reali&a un recorrido de un array de la si"uiente manera, no utili&a un 'ndice: foreac (int i in fibarray)! "ystem.#onsole.$rite%ine(i); & En java: for (int i='; i(fibarray.len)t ; i**)! "ystem.out.+rintln(fibarray[i]); & Switch: En java solo se admiten enteros, caracteres o booleanos como condiciones del case, pero en C# se pueden usar adems los enumerados y las cadenas, se puede saltar de un case a otro y para ello se debe usar )oto$ En C# Nombre1==nombre2;
Clases de
!"etos
Propiedades: (na propiedad es un campo #ue permite al pro"ramador controlar el acceso al mismo tanto en lectura como escritura$ C# implementa las propiedades como parte de la sintaxis del len"uaje, ava para implementar la misma funcionalidad recurre a patrones o convenciones de nombres$ En java: +ublic class ,ersona ! +ri-ate int edad; +ublic int )et.dad()! return edad; & +ublic -oid set.dad(int -alor)! edad=-alor; & & class ,ro)ram ! static -oid 7ain() ! 1ime,eriod t = new 1ime,eriod(); t.2ours = 28; 33(set) "ystem.#onsole.$rite%ine(91ime in ours: 9 * t.2ours); 33()et) & Objetos: En C# los tipos pueden pertenecer a al"una de las si"uientes cate"or'as: estructuras, clases de objetos (ambos con ancestro com)n a la clase object), estructuras enumerados y tipos dele"aos$ En java *ay una clase padre llama object de la #ue *eredan el resto excepto los tipos bsicos #ue no son objetos$ & En C#: class 1ime,eriod ! +ri-ate double seconds; +ublic double 2ours ! )et ! return seconds 3 45''; & set ! seconds = -alue 6 45''; & &
&
Indi adores: En C# nos permiten construir fcilmente clases a cuyos objetos se puede acceder mediante un 'ndice$ En java esto no es posible$ class !ampleCollection+T, private T./ arr 0 ne1 T.233/4 public T t*is.int i/ "et return arr.i/4 5 set arr.i/ 0 value4 5 5 5 class 6ro"ram static void 7ain(strin"./ ar"s) !ampleCollection+strin", strin"Collection 0 ne1 !ampleCollection+strin",()4 strin"Collection.3/ 0 89ello, :orld84 !ystem$Console$:riteLine(strin"Collection.3/)4
5 5
!"entos y delegados (n evento es cual#uier acontecimiento en la vida de un objeto #ue puede ser de inter;s para otros y un dele"ados es tupo de un evento$ En ava existen unos patrones de dise<o #ue son usados por ciertas clases$ 6ara #ue un objeto se pueda suscribir a un evento debe implementar cierta interfa& y acabar con la palabra listener$ El objeto notificador normalmente tiene un m;todo #ue empie&a por add o remove y termina con listener y #ue son usados para re"istrarse o darse de baja para un evento$ En C# se usa event para especificar automticamente #ue un campo dentro de un suscriptor es un dele"ado #ue ser usado durante un evento$ Los operadores =0 y >0 son anlo"os a los usados en java para suscribirse o desuscribirse de un evento$ En java: En c#: add7ouse%istener( new 7ane;ador#lics<aton() );
+ublic .-ent%istener(%ist$it # an)ed.-ent list) ! %ist = list; %ist.# an)ed *= new # an)ed.-ent2andler(%ist# an)ed); & Destructores:
En C# los destructores son el m;todo #ue se ejecuta justo antes de destruir un objeto$ !in embar"o en ava no existe este concepto, siendo lo mas parecido el m;todo finali&e() #ue es llamado cuando se ejecuta el recolector de basura y cuando "eneralmente para liberar memoria y otros recursos$ Polimorfismo y e#tensi$n de clases Sinta#is de la herencia En C# se usa ?:@ tanto para *erencia en clases como para implementar interfaces, en ava se usa las palabras extends e implements$ En java: +ublic class = ! +ublic =() ! & & +ublic class > e0tends = ! +ublic >() ! & & ,ublic clase > im+lemts =! & En C#: ,ublic >()!& +ublic class = ! +ublic =() ! & & +ublic class > : = ! +ublic >() ! & &
$erencia %<iple En java existe y en C# no$ Poli%orfis%o: En C# un m;todo no se declara como virtural y es necesario pone override para sobrescribir un m;todo abstracto 'odificadores de Interfa : En ava existe public y sin modificar mientras #ue en C# se intruducen new? +rotected? internal y +ri-ate. %i!lioteca (lases y archi"os: En java un arc*ivo solo contiene a una clase, en C# un arc*ivo puede contener varias clases$ !spacios de no%bre: (n espacio de nombre es una manera de a"rupar una colecci%n de clases$ En java, un espacio de nombres determina la disposici%n f'sica de los fic*eros fuente en la jerar#u'a de directorios, mientras en C# solo representa su estructura l%"ica$