Java - AYUDA A LEER UN CODIGO C#

 
Vista:
sin imagen de perfil

AYUDA A LEER UN CODIGO C#

Publicado por Diana (1 intervención) el 18/05/2018 17:18:31
Quisiera que alguien me ayudara explicándome como funciona este código, como le hace para agregar los random asi, porque yo acostumbro a hacerlo asi:
numRandom = objNum.next(10,20)
asi que a saber como lo hizo asi, que se hace en el foreach, y en lo ultimo del porcentaje que es 150f, que es lo de orderby e item, que es lo que se hace dentro del ultimo for.porfavor ayúdenme y gracias :)
todo lo que se pueda explicar del código porfavor



Cartas enumeradas y cartas revueltas son listas y TamañoFilCol=4


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int i=0; i < 8, i++)
{
CartasEnujmeradas.Add(i.ToString());
CartasEnujmeradas.Add(i.ToString());
}
var NumeroAleatorio = New Random();
var Resultado = cartasEnumeradas.OrderBy(ítem=>NumeroAleatorio.Next());
foreach(string ValorCarta in Resultado)
{
CartasRevueltas.Add(ValorCarta);
}
vae tablapanel = new TableLayOutPanel();
tablapanel.RowCount = TamañoFilCol;
tablapanel.ColumnCount = TamañoFilCol;
for(int i =0; i<TamañoFilCol;i++)
{
var Porcentaje 0 150f / (float)TamañoFilCol -10
tablaPanel.columnstyles.add(new columnstyles(sizetype.percent, porcentaje)
tablaPanel.rowstyles.add(new columnstyles(sizetype.percent, porcentaje)
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 973
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA A LEER UN CODIGO C#

Publicado por Agustin (170 intervenciones) el 19/05/2018 00:26:55
No creo que haya mucha gente en el foro de java que te pueda ayudar a entender un lenguaje moderno y usable como C#.

En general la gente que usa java vive en 1999 y todavía usa "patrones de diseño" como mi abuela.

Ahora cuando pueda agarrar una pc te escribo una respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-2
Comentar
sin imagen de perfil
Val: 973
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA A LEER UN CODIGO C#

Publicado por Agustin (170 intervenciones) el 20/05/2018 16:00:09
Viste? Me downvotean, pero nadie es capaz de responderte. Por qué? porque los programadores java no tienen idea de cómo es un lenguaje moderno. Si la tuvieran no estarían usando java.

Vamos por partes:

1 - El código así tal y como lo posteaste no compila, te sugiero que cuando postees código para que lo vean otros uses copy paste y no lo escribas a mano ni nada. C# y muchos otros lenguajes son case-sensitive, es decir tenes que respetar las mayusculas, y una diferencia en punto o una coma puede modificar todo el significado del código.

2 - Para responder tus preguntas:

como le hace para agregar los random asi

En realidad no está "agregando" los random en ningún lado, sino que los está usando como valor de resultado de la función lambda que recibe como parámetro el OrderBy(), de forma tal que cada vez que el OrderBy() evalúa esa función, recibe un nuevo número aleatorio.

que se hace en el foreach

el foreach simplemente itera los datos de una lista y los mete en otra lista, cosa que se considera mala práctica en C#, ya que es innecesario.

en lo ultimo del porcentaje que es 150f

el sufijo "f" es un literal numérico en C# especifica el tipo de datos float (tambien conocido como "single")

que es lo de orderby

La función Enumerable.OrderBy() (junto con todos los miembros de la clase System.Linq.Enumerable) pertenece a una característica del lenguaje C# y del .NET Framework conocida como LINQ, y lo que hace concretamente es ordenar un enumerable basándose en el resultado de la función que recibe como parámetro evaluada para cada elemento del enumerable.

e item

en este ejemplo, item es el argumento de la [b=https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions]expresión lambda[/b], y correponde a cada elemento del enumerable (en este caso cartasEnumeradas) sobre el cual se realiza el OrderBy(). Es importante entender que como LINQ es de lazy evaluation, el order by en sí mismo "no hace nada", al menos no hasta que se enumere su resultado, en este caso en el foreach que le sigue.

3 - Por último te dejo un ejemplo de cómo sería la forma correcta de escribir este código en C#:

1
2
3
4
5
6
7
var random = new Random();
 
var cartasRevueltas =
      Enumerable.Range(0, 7)
                .SelectMany(x => new []{ x, x })
                .OrderBy(x => random.Next())
                .ToList();

Es decir, creo un rango entre 0 y 7 (que es lo que hace el bucle for del principio), para cada elemento creo un array que contenga 2 veces el mismo elemento (ya que lo estas agregando 2 veces en la lista CartasEnujmeradas), y de esa lista de arrays me creo un enumerable grande que contenga todos los elementos de cada una, y luego ese enumerable grande la ordeno usando el Random, y el resultado lo meto en una lista.
Esta forma de hacerlo te ahorra el bucle for, el foreach, y la declaración de variables intermedias totalmente innecesarias, y te lo reemplaza por una simple, elegante y hermosa cadena de funciones LINQ. He ahí la belleza de C#.

Si tenes más duda comentame y te puedo ayudar mejor.

P.S: con LINQ nomas, ya te das cuenta que comparado con C#, java no sirve para nada.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar