Befehl nur einmal ausführen

Er soll in die if-Schleife springen, aber nur einmal. Danach ist das Objekt nicht mehr null.
Er macht also genau das, was du in deinem ersten Posting beschrieben hast.
 
Das ist mir schon klar.
Aber nach dem Random rdm nicht mehr Null ist, springt er mir immernoch in die IF-Schleife.

Code:
if (rdm == null)
	{
		rdm = new Random();
	}
Würde er mir nach dem ersten durchgang nicht mehr in die Schleife gehen, so könnte er mir keine neue Random zahl erstellen.

Und ich kappiere nicht weshalb er mir trotz dem Random rdm nicht mehr Null ist, immer noch in die schleife geht.
 
Ok, fragen wir mal anders.

Warum glaubst du geht immer wieder in den if-Anweisungsblock rein?

Hier ein kleines komplettes Beispiel aus dem ersichtlich ist, das er nur einmal reingeht.

Code:
using System;

public class MyClass
{
	public static void Main()
	{
		new MyClass();
	}
	
	public MyClass()
	{
		DoBlubb();
		DoBlubb();
		DoBlubb();
		Console.Read();
	}
	
	Random rdm;
	int count = 0;
	
	private void DoBlubb()
	{
		count ++;
		
		if (rdm == null)
		{
			rdm = new Random();
			Console.WriteLine("New Random..");
		}
		
		int i = rdm.Next();
		Console.WriteLine("#{0} -> {1}",count.ToString(), i.ToString());
		
	}
	
}
 
Weil das die Aufgabe der Next-Methode ist?
Wenn du nur bei jeder neuen Instanz deines Programms eine Zufallszahl brauchst, erstelle einfach beim Starten eine und speichere diese in einer Variable.
 
Random rmd = new Random(); erzeugt einen Pool aus Zufallszahlen. rmd.next() holt sich die nächste Zahl aus der Liste von Zufallszahlen. rmd ist nicht die Zufallszahl, sondern liefert nur die Zahlenbasis.
 
Das heisst, ich müsste rmd.Next() in eine if-abfrage stecken. Dass dies nur einmal ausgewertet wird.

Das geht aber nicht, weil dann ein Kompilierungsfehler entsteht. Weil die Variabeln möglicherweise nicht zugewiesen werden.
 

Neue Beiträge

Zurück