Browserspiel

also so wie ich das sehe willst du die ArrayList aus dem Ram des Servers in den Ram des Computers schicken, oder? Da müsste es doch irgendeine Methode geben.
 
Ne hast du falsch verstanden.

Ich will eine ArrayList und die muss ich irgendwann am Anfang ja mal deklarieren und zwar nur einmal.
Und wie mache ich das?

Am Ende ist klar, da wird dann immer nur ein "Add" ausgeführt.

Ciao,
Eroli



PS: Es soll alles serverseitig laufen...
 
Einfach ne neue ArrayList:

Code:
System.Collections.ArrayList Players = new System.Collections.ArrayList();

du kannst aber auch ein

Code:
using System.Collections;

davorsetzen.
 
Zuletzt bearbeitet:
Ja das ist mir schon klar.
Ich erstelle diese ArrayList also im Konstruktor der Klasse GameControl.
GameControl hat dann weitere Child-Klassen: GameControl.Player und GameControl.Airplane.

Ich denke das wird sich aber noch ändern...

So, dass wird also im Konstruktor erstellt, aber wann genau wird der Konstruktor aufgerufen?
Die Klassen befinden sich im "App_Code"-Ordner, der von meiner ganzen Webanwendung aus zugänglich ist.

Nur wann wird der Konstruktor immer augerufen? Nachdem die Klasse das erste Mal gestartet wurde? Das ist meine Frage.

Wann werden Klassen im "App_Code"-Ordner meiner ASP.NET 2.0 Webanwendung erstellt? - Wenn ich den Konstruktor der Klasse aufrufe - klar. Nur WANN kann ich das machen, dass dieser NUR EINMAL aufgerufen wird?
 
wenn du das Serverseitig machen willst, dann Programmierst du ja nur nen Server oder

es gibt doch sicher irgendein Ereigniss dass nur beim Serverstart aufgerufen wird, da kannst du den Konstruktor reinmachen

oder was ich noch von C++ kenne, da gibts ja

#if !defined ....

das wäre noch eine lösung, wenns was vergleichbares in C#/ASP.NET gibt
 
ja daran hatte ich auch schon gedacht:
C#:
public partial class GameControl
{
    List<Player> m_Player;

public void StartGameControl()
{
if (m_Player != null)
{
m_Player = new List<Player>();
}
}
[...]

Und dann könnte man das GameControl.StartGameControl() quasi bei jedem Seitenaufruf ausführen, oder?

Obwohl, ne. Das geht auch nicht. Dann hab ich nachher ja total viele GameControl-Objekte......


Ich verzweifel hier noch.....:mad:


EDIT: ICH GLAUBE SO GEHTS:

GameControl wird jetzt statisch, mann muss es nicht mehr erstellen oder sehe ich das falsch?
C#:
public static partial class GameControl
{
    private static List<Player> m_Player;

    public static void CreateAirplane(string Name, string Description, int Pilots, int Stewards, int Seats, int Consumption, int Speed, Point Position, int Range, int Tank)
    {

    }

    public static void StartGameControl()
    {
        if (m_Player != null)
            m_Player = new List<Player>();
    }
}
Was meint ihr? Geht es so?



Eroli
 
Zuletzt bearbeitet:
ja, statisch gehts auch

wenn du alle Methoden und Eigenschaften einer Klasse static machst hast du pracktisch nen Namespace :)

du musst dann die Klasse nur noch auf jeder Seite verfügbar machen
 
Da sich die Klasse im App_Code Ordner befindet, ist sie von alleine überall verfügbar:
Ordner "App_Code"

Wenn Sie Quellcode im Ordner App_Code speichern, wird dieser zur Laufzeit automatisch kompiliert. Die sich ergebende Assembly ist für jeden anderen Code in der Webanwendung zugänglich. Der Ordner App_Code arbeitet also ähnlich dem Ordner Bin, mit dem Unterschied, dass in ihm Quellcode anstelle von kompiliertem Code gespeichert wird. Der Ordner App_Code und sein besonderer Status innerhalb einer ASP.NET-Webanwendung ermöglichen es, Benutzerklassen und andere reine Quellcodedateien zu erstellen und in der Webanwendung zu verwenden, ohne sie unabhängig zu kompilieren.

Der Ordner App_Code kann Quellcodedateien enthalten, die als traditionelle Klassendateien geschrieben sind, also Dateien mit .vb-Erweiterung, .cs-Erweiterung usw. Allerdings kann er auch Dateien enthalten, die nicht explizit zu einer bestimmten Programmiersprache gehören. Beispiele dafür sind WSDL-Dateien (Web Service Discovery Language) und XML-Schemadateien (.xsd). ASP.NET kann diese Dateien zu Assemblys kompilieren.

Der Ordner App_Code kann beliebig viele Dateien und Unterordner enthalten. Sie können Ihren Quellcode auf beliebige Weise organisieren – ASP.NET wird immer den gesamten Code in eine einzige Assembly kompilieren, die für jeden anderen Code überall in der Webanwendung zugänglich ist.
(Quelle: http://msdn2.microsoft.com/de-de/library/t990ks23(VS.80).aspx )

Das ist jetzt zwar nicht der exakte Beweis. Ich habe den Artikel vor paar Stunden gelesen, irgendwo stand das noch besser drin. Aber jetzt bin ich zu faul zum suchen...
-----------------------------------------------

Okay, dann werde ich jetzt alles statisch machen müssen. Wobei ich da schon nen Bammel vor habe, denn statische Klassen fand ich schon immer doof ^^ ;)


Okay, ich danke für die Beratung,

Eroli


EDIT:
wenn du alle Methoden und Eigenschaften einer Klasse static machst hast du pracktisch nen Namespace
Das hab ich noch nicht verstanden...
 
naja, ein Namespace ist eine zusammenfassung von Variablen, Klassen und Funktionen

der ist von überall Verfügbar, muss nicht Deklariert werden, und eine änderung wirkt sich auf alles aus (wenn du eine Variable ändert, ist sie für jede Datei geändert). Genau das ist eine Klasse auch.

Da fällt mir was ein: du könntest das ja auch in einen Namespace packen, da sparst du dir das ganze Zeug mit static und ich glaube damit solltest du auf jeden Fall klarkommen
 
Jo stimmt. Das wäre wirklich eine Alternative, aber ich hab jetzt schon angefangen jetzt zieh ich das auch durch.

Ok, bei weiteren Fragen könnt ihr diese hier nachlesen ;)

Ciao,
Eroli
 
Zurück