Rokket84 - Sa 06.02.10 21:02
Titel: struct anlegen und in object speichern
Hallo,
habe hier ein Programm, dass den Wert 0 ausgibt. Wieso gibt es null und nicht 12 aus und wie kann ich es erreichen, durch einfügen einer Zeile an der Stelle // hier Zeile einfügen... damit 12 ausgegeben wird?
gruß rokket86
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Test { struct A { public int i; public void set(int ii) { i = ii; } } class Program { static void Main(string[] args) { A a = new A(); object o = a; ((A)o).set(12); Console.WriteLine(((A)o).i); Console.ReadLine(); } } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Kha - Sa 06.02.10 23:50
:welcome:, gleich zum Einstieg eine sehr gute Frage :zustimm: !
Rokket84 hat folgendes geschrieben : |
Wieso gibt es null und nicht 12 aus |
Weil Mutable Structs
unglaublich böse [
http://blogs.msdn.com/ericlippert/archive/2008/05/14/mutating-readonly-structs.aspx] sind. Wenn du, sobald ein Typ veränderbare Daten enthalten soll, erst gar nicht an Structs, sondern an eine Klasse denkst, lebst du eindeutig glücklicher.
(überhaupt sollten Klassen
immer die erste Wahl sein. Beim Optimieren der Performance
könnte sich dann herausstellen, dass das Ersetzen durch einen Struct noch ein paar ms rausholt, aber das bitte wirklich nur nach gründlichem Messen)