Permalänk

For-loop för variabelnamn

En tanke som slog mig idag, då jag körde igenom ett x-antal if-statement som hade namn som

someValue1
someValue2
someValue3........

etc.etc.

Kan man med en for-loop köra igenom alla istället för att skapa ett if-statement för varje?

Nåt i stil med (nu vet jag att det inte funkar, min fråga är alltså om man kan få det att fungera nåt åt det här hållet?

Det jag vill är alltså att someValue(i) , skall motsvara då someValue1, someValue2.... etc.

for (int i = 0; i < 10; i++) { if (someValue(i).value = "newValue") }

Visa signatur

[ -- Gaming -- ]
{ i5-9600k - RTX 3070 OC - 16GB - 3 x 1TB m.2 }
[ -- Workstation --]
{ i7-5960X | GTX 1660 6GB / Quadro | 48GB corsair dominator platinum | 20TB }
{ Lenovo T480S | i7-8650U | 16 GB | 512 GB }

Permalänk
Medlem

Det blir nog lättare att assigna someValue(i) istället för att assigna someValue1 , 2 ,3 etc från början

Visa signatur

<3

Permalänk
Medlem

Jo, men då får du skapa en array av somevalue sen sätta vilkoret på loopen att sluta när storleken på arrayen har uppnåtts. Därefter skall det fungera bra.

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Medlem

Om det är publika klassvariabler så kan du använda reflection, om du inte behöver instansvärden så gör du dem till static.

C# Exempel:

class Program { public static string someValue1 = "oldValue"; public static string someValue2 = "newValue"; public static string someValue3 = "anotherValue"; static void Main(string[] args) { var fields = typeof(Program).GetFields().Where(f => f.Name.StartsWith("someValue")); foreach (var field in fields) { if(field.GetValue(null) as string == "newValue") { Console.WriteLine("Yeaaaah!"); } } } }