Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

412
Vistas
¿Cómo puedo hacer mi propio "foreach" o similar para mi matriz 2D de objetos personalizados?

Tengo una clase ( Biome ) que contiene una matriz 2D de objetos personalizados ( Level ). Con frecuencia quiero recorrer todos (o algunos) de los niveles y realizar algunas acciones, por ejemplo, establecer su propiedad de color.

En lugar de escribir el mismo bucle for anidado una y otra vez, ¿puedo crear mi propio método que me permita hacer algo como: ForEachLevel(SetColour()) ?. ¿Dónde SetColour() sería un método en mi clase de Biome que simplemente establece la propiedad de color del nivel en algún valor aleatorio o usa alguna otra lógica basada en factores dentro del Biome ?

Así que en lugar de:

 for (int r = 0; d < Rows; r++) { for (int c = 0; l < Cols; c++) { if (some logic here) Levels[r, c].Colour = Color.Red; else Levels[r, c].Colour = Color.Green; } }

Podría hacer algo como:

 ForEachLevel(SetColour(--what goes here?--)); void SetColour(Level level){ if (some logic here) level.Colour = Color.Red; else level.Colour = Color.Green; }

O incluso mejor, me gustaría hacer algo similar que solo ejecute una función en, por ejemplo, las filas X a Y.

Como puede ver en mi ejemplo, ni siquiera sé cómo obtendría el contexto de cada instancia de Level en la función SetColour.

Puedo seguir copiando/pegando mis bucles anidados personalizados para lograr lo que quiero, pero esperaba que alguien con más experiencia pudiera entender lo que estoy tratando de hacer y señalarme la dirección correcta sobre cómo puedo usar mejores técnicas de C#.

Debido a que he sido vago, entiendo si no se puede dar una respuesta específica , ¡pero se agradecerían algunos conceptos clave para futuras investigaciones! Gracias

EDIT2 en realidad ese intento anterior no funciona en absoluto. Olvidé que necesito llamar a ForEachLevel en otro lugar. Sigo trabajando en eso.

 private void SomeOtherMethod() { // where I want to actually use the ForEachLevel() ForEachLevel(SetLevelColor(--Level??--, Color.red)); } private void ForEachLevel(Action DoAThing) { for (int d = 0; d < Depths; d++) { for (int l = 0; l < Lanes; l++) { DoAThing(); } } } private void SetLevelColor(Level level, Color color) { // trivial example level.Color = color; }
over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda