Struct und IDisposable

Frage ich mich, warum es nicht kompilieren?

public static void Main(string[] args)
{
    using (MyStruct sss = new MyStruct())
    {

        sss.s = "fsdfd";//Cannot modify members of 'sss' because it is a 'using variable' 

        //sss.Set(12);    //but it's ok
    }
}

public struct MyStruct : IDisposable
{
    public int n;
    public string s;

    public void Set(int n)
    {
        this.n = n;
    }
    public void Dispose()
    {
        Console.WriteLine("dispose");
    }
}

UPDATE:
Aber es funktioniert perfekt. Warum?

public static void Main(string[] args)
        {

            using (MyClass sss = new MyClass())
            {
                sss.Field = "fsdfd"; 
            }


        }

public class MyClass:IDisposable {

    public string Property1 { get; set; }
    public string Field;
    public void Method1 (){}

    public void Dispose()
    {
        Console.WriteLine("dispose class");
    }
 }
Ich will Menschen Erschießen, wenn ich jemals jemanden gesehen, der die Umsetzung IDisposable auf eine struct.
wird, dass zufällige Leute oder die person, die es umzusetzen? Wäre gut zu wissen.
Sie sollte erklären, warum 🙂 Und ich verstehe immer noch nicht, die Erklärung der Grund für diese. Warum mit der Klasse(N) es anders?
Nebenbei, Sie können es nicht tun, selbst wenn Sie mit einem foreach (var sss in new List<MyStruct>())
Siehe Daniel Earwicker Antwort.

InformationsquelleAutor Alexandre | 2011-10-27

Schreibe einen Kommentar