Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

394
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!