Entwickler-Ecke

Basistechnologien - Variablen mit Platzhaltern


Delete - Sa 29.05.10 22:45
Titel: Variablen mit Platzhaltern
Ich weiß nicht, ob ich hier in der richtigen Sparte gelandet bin, wenn nicht, sorry.
Bin sozusagen C# Neuling und habe folgenden Code:

Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
        private void button1_Click(object sender, EventArgs e)
        {
            
            if (Globals.Betören == 0 && Globals.rap >= Globals.b1auf)
            {
                Globals.rap = Globals.rap - Globals.b1auf;
                Globals.Betören = Globals.Betören + 1;
                Globals.ausap = Globals.ausap + Globals.b1auf;
            }
            else if (Globals.Betören == 1 && Globals.rap >= Globals.b2auf)
            {
                Globals.rap = Globals.rap - Globals.b2auf;
                Globals.Betören = Globals.Betören + 1;
                Globals.ausap = Globals.ausap + Globals.b2auf;
            }
            else if (Globals.Betören == 2 && Globals.rap >= Globals.b3auf)
            {
                Globals.rap = Globals.rap - Globals.b3auf;
                Globals.Betören = Globals.Betören + 1;
                Globals.ausap = Globals.ausap + Globals.b3auf;
            }
            else if (Globals.Betören == 3 && Globals.rap >= Globals.b4auf)
            {
                Globals.rap = Globals.rap - Globals.b4auf;
                Globals.Betören = Globals.Betören + 1;
                Globals.ausap = Globals.ausap + Globals.b4auf;
            }
            //    ... so geht das noch ungefähr bis Globals.Betören == 20 weiter...
        }


so nun ist dies allein schon ziemlich unprofessionell, da sehr lang und unübersichtlich.
hinzu kommt, dass ich noch eine Textbox haben will in der a b c d e oder f steht, sodass
sämtliche Globals.b"Zahl"auf zu Globals.a"Zahl"auf, Globals.c"Zahl"auf (...) werden.
Dies in leicht abgeänderter Form muss ich zusätzlich noch auf andere Buttons legen und dann
wäre das erst richtig hässlich.

Zu meiner Frage:
kann ich das nicht irgendwie mit einer Schleife machen oder zumindest mit Platzhaltern in den
Globals Variablen alias:
Globals.rap = Globals.rap - Globals."Convert.ToString(textboxABCDE.Text)" + "Zahl" * auf; // Zahl soll natürlich auch irgendwo her bezogen werden
Ich hoffe irgendjemand hat verstanden, was ich versuche zu Fragen und kann mir helfen...


Kha - So 30.05.10 01:15

:welcome:

Eine Menge von Variablen, auf die man "dynamisch" zugreifen will, lässt sich immer durch ein Array oder Dictionary ersetzen. Vielleicht hilft dir schon dieser [http://c-sharp-forum.de/topic_Variableninhal+als+Klasseninstanzmame+benutzen_99675.html] Thread, in dem es um das gleiche Thema ging.


Oppi35 - So 30.05.10 08:58

Hi,

hier mal ein kleiner Vorschlag. Bei Unklarheiten meld Dich bitte nochmal:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Globals glob = new Globals();

            glob.rap = 3;
            glob.ausap = 1;
            glob.Betören = 0;
            glob.bauf.Add(2);
            glob.bauf.Add(6);
            glob.bauf.Add(3);

            foreach (int i in glob.bauf)
            {
                if (glob.Betören == 0 && glob.rap >= i)
                {
                    Console.WriteLine(i);            
                }
            }
          
        }
    }
    class Globals
    {
        public List<int> bauf= new List<int>();
        public int rap;
        public int Betören;
        public int ausap;

    }
}


Moderiert von user profile iconKha: C#-Tags hinzugefügt