Entwickler-Ecke

C# - Die Sprache - eierlegende Wollmilch Variable


deusr - Fr 02.03.07 19:07
Titel: eierlegende Wollmilch Variable
Hallo Leute,

ich bin gerade auf der Suche nach einer Lösung zu einem Problem. Ich möchte einer Variable den Wert einer anderen zuweisen.


C#-Quelltext
1:
a=b                    


Im grunde genommen ist es wirklich alles, was ich will. Ein anderes Problem ist, dass b alles mögliche sein kann. Integer, double, string, (array, bitmap). Irgendwann später will ich dann a auslesen (c=a) und c sollte = b sein.

Hat von euch jemand eine Idee, wie man so etwas am besten machen kann? Irgendwie neigt es mich dazu einfach ein Byte Array anzulegen und dort dann binär die Variable b reinzuschaufeln.


Moderiert von user profile iconChristian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am Fr 02.03.2007 um 18:16


Calculon - Fr 02.03.07 19:12

Ich kenn' mich ja in C# nicht aus, aber muss man da Variablen nicht deklarieren? Wie kann es sein, dass der Typ von b nicht bekannt ist?

PS: Echt cooler Titel!


Christian S. - Fr 02.03.07 19:18

Hallo!

Prinzipiell ist in C# alles vom Typ Object abgeleitet, das dürfte also die richtige Wahl sein.

Allerdings verlierst Du vollständig die Typensicherheit und von der Performance her dürfte es auch grottig sein. Könntest Du das, was Du machen willst, etwas genauer beschreiben? Vielleicht findet sich da eine bessere Lösung, evtl. mit Suche bei Google GENERICS.

Grüße
Christian


deusr - Fr 02.03.07 19:39

Also das ganze wird am Ende wahrscheinlich nicht als Anwendung laufen, sondern eine DLL Datei mit Klassen und Methoden sein. Dem Programmierer, der die DLL benutzt, soll die Möglichkeit gegeben werden, die Objekte näher zu beschreiben. Sagen wir mal ich habe ein Objekt TafelSchokolade. Der Programmierer sagt nun, dass TafelSchokolade folgende Zutaten enthällt:

80 (integer)/ "Gramm Kakao"
1.9 (double) / "Gramm Fett"
true / "Zucker"

["20°C"]["10^7η"]
["60°C"]["10^4η"] (array) / "Viskosität"

-- jetzt nur als Beispiel


Christian S. - Fr 02.03.07 19:44

Hm. Das klingt etwas knifflig.

Und Du kannst keinerlei Einschränkungen bezüglich der zu verwendenden Typen machen? Was soll die DLL denn machen?


deusr - Fr 02.03.07 19:58

user profile iconChristian S. hat folgendes geschrieben:

Und Du kannst keinerlei Einschränkungen bezüglich der zu verwendenden Typen machen? Was soll die DLL denn machen?


Diese DLL hat nur eine einzige Aufgabe: Sie soll dem Programmierer die Arbeit erleichtern. Sie beschreibt eben das Objekt. Hat z.B. eine Methode zur Ausgabe aller notwendigen Informationen über das Objekt und andere Spielereien.

Ich würde bei den Typen ganz gerne keine Einschränkung vornehmen. Aber es werden wahrscheinlich Bool, Int, Double und String Variablen sein.

Als ehemaliger ASM Programmierer wollte ich deshalb auch den Brute Force Weg gehen und einfach den physikalischen Arbeitsspeicher an der Stelle der Variablen auslesen und die Informationen dann in ein bytes array reinschaufeln....... Und vll. den MSB noch abspeichern...


Kha - Sa 03.03.07 13:15

Das Speichern als Object sollte kein Problem sein, das Problem wird sowieso das Parsen sein. Speichern könntest du das Ganze dann in einem Dictionary<string, object>, wobei der Schlüssel dann der Eigenschaftsname ist.