Laden...

Random-Zahl in Variablen speichern

Letzter Beitrag vor 7 Jahren 5 Posts 2.774 Views
Random-Zahl in Variablen speichern

Hallo liebe Community!

Ich bin leider ein ziemlicher Anfänger und bräuchte eure Hilfe zu folgendem Codeteil:

Ich möchte, dass die zufällig generierten Zahlen in der Schleife dann auch auf a, b und c übergehen werden und ich dann damit weiterarbeiten kann. Ist das möglich ? Habe bis jetzt leider nicht gefunden. danke!

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {

            int a = 1;
            int b = 2;
            int c = 3;


            int[] zahlen = new int[] { a, b, c };
            

            foreach (int test in zahlen)
            {
                Console.WriteLine(test);
            }

            Random q = new Random();
            
            
            for (int i = 0; i < 3; i++)
            {
                
                zahlen[i] = q.Next(1,90);
                
                
            }
            
            
           


            Console.WriteLine(a);



            Console.ReadLine();

        }
    }
}

Hallo, willkommen im Forum.
Verwende doch das nächste mal bitte die Code Tags.

Dein Problem an der Stelle ist, wenn du



int[] zahlen = new int[] {a,b,c};


schreibst, dann legst du eine Kopie des Wertes an.
Du solltest dir zu dem Thema den Unterschied zwischen Referenz und Wertetypen durchlesen.

Das Problem ist, du kannst in C# keine Referenz auf einen Wertetyp speichern.

Was du machst kannst ist die Variablen in eine Klasse speichern und in dem Array die Klassen Referenzen speichern.

Also als Beispiel



class A
{
    public int a {get;set;}
}

//In der Main

A[] array = new A[3];
A[0] = new A();
A[0].a = 1;

//und so weiter


Wenn du nur die Zufallswerte in deinen Variablen speichern willst, dann kannst du dir das Array sparen.
Alternativ musst du sonst nach dem setzen der Random Werte die jeweiligen Stellen aus dem Array wieder in den Variablen speichern.

Eine extra Klasse wie von Lenny vorgeschlagen, passt meiner Meinung nach nicht.
Ansonsten hat Lenny aber mit dem Unterschied zwischen Werte- und Referenztypen schon recht.
An dieser Stelle würde dein Eintrag im Array also durch einen neuen Wert überschrieben.
Dieser hat aber keinen bezug zu den Variablen, weshalb eine Änderung im Array auch nicht deine Variablen verändert sondern nur die jeweiligen Stellen im Array.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

Dankeschön für eure schnellen Antworten.

@T-Virus

Wie wäre dann die Lösung wenn ich mir die Arrays sparen kann ?
ICh hoffe, dass ich nicht zu viele Umstände bereite.

@tomtom91
Hier musst du a, b und c einzeln die Werte mit Random zuweisen.
Solltest du hinbekommen.

Wenn du aber an deinem Schleifen Ansatz festhalten willst, musst du zwangsweise über den Array Index a, b und c neu setzen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.