Entwickler-Ecke

C# - Die Sprache - struct anlegen und in object speichern


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);
                // hier Zeile einfügen...
                Console.WriteLine(((A)o).i);
                Console.ReadLine();
            }
        }
    }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Kha - Sa 06.02.10 23:50

:welcome:, gleich zum Einstieg eine sehr gute Frage :zustimm: !

user profile iconRokket84 hat folgendes geschrieben Zum zitierten Posting springen:
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)