Entwickler-Ecke

C# - Die Sprache - Manuelles unboxing?


FinalFantasy - Mo 14.11.05 12:18
Titel: Manuelles unboxing?
Hi,

ich hab hier eine ArrayList und möchte die Inhalte der Liste binär mit BinaryWriter in eine Datei schreiben.
bw.Write() geht aber nicht mit Objekten sondern nur mit "echten" Typen.
In meiner ArrayList stehen aber unterschiedliche (primitive) Typen wie int, short, byte, bool, string....
Mittels o.GetType() kann ich den Typen ja ermitteln, aber wie kann ich das Object in diesen Typen konvertieren?
Einzige Möglichkeit die mir bis jetzt eingefallen ist, wäre

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach(object o in array) {
  switch(o.GetType()) {
    case 'int': bw.Write((int) o);
    case 'short': bw.Write((short) o);
    ....
  }
}


Das Beispiel ist nur sinngemäß, wird also so nicht genau funktionieren.
Diese Lösung ist aber ziemlich unflexibel und würde halt auch nur mit den Typen funktionieren, die man im Switch hat.
Es muss doch noch bessere Lösungen geben!!

Nein, ich habe nur .NET 1.1 und kann von daher auch keine Generics benutzen, und nein, ich kriege auch kein .NET 2.0.


Robert_G - Mo 14.11.05 15:59
Titel: Re: Manuelles unboxing?
user profile iconFinalFantasy hat folgendes geschrieben:
Es muss doch noch bessere Lösungen geben!!
Jupp, den BinaryFormatter:

Zitat:
Nein, ich habe nur .NET 1.1 und kann von daher auch keine Generics benutzen, und nein, ich kriege auch kein .NET 2.0.
Frage mal deinen Chef, was wohl günstiger ist: Die paar Öken für ein Pro update zu zahlen, oder die zig Stunden, die drauf gehen weil du um 5 Ecken denken und Code schreiben must, der mit 2.0 schlichtweg nicht mehr nötig ist. (Bzw. du musst nun mit ArrayListen rumfriemeln...)
Sorry, kann ich absolut nicht nachvollziehen... :gruebel:
Aber gilt das nicht für das Management in größeren Firmen im Allgemeinen? ;)


FinalFantasy - Mo 14.11.05 16:55

Ahh, danke, das sieht ja schonmal ganz interessant aus. Das werd ich mir mal anschauen.

OT:
Das Problem (bei grösseren Firmen zumindest) ist, dass für denjenigen der entscheidet, ob ich .NET 1.1, .NET 2.0 oder Cobol mache, zwischen Windows und Linux genausowenig unterschied ist, wie zwischen C, C++ und C#.... Auf deutsch: Es interessiert ihn nicht.
Musste schon darum kämpfen, über haupt von Delphi 5 (!!!) auf C#.NET wechseln zu dürfen. Visual Studio 2005 kostet ja schliesslich was, wohingegen Delphi 5 schon da ist, ausserdem muss ja dann noch bei allen Anwendern das .NET Framework installiert werden, was wieder ein Aufwand ist.... *chrm*