Struct et IDisposable

Je me demande pourquoi n'est-il pas compiler?

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");
    }
}

Mise à JOUR:
Mais il fonctionne parfaitement. Pourquoi?

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");
    }
 }
Je vais tirer sur les gens si je l'ai jamais vu quelqu'un la mise en œuvre de IDisposable sur un struct.
sera-ce des gens au hasard ou à la personne de la mettre en œuvre? Pourrait être bon à savoir.
Vous devez expliquer pourquoi 🙂 Et je n'ai toujours pas voir l'explication sur la raison de cette. Pourquoi la classe(es), c'est différent?
Au passage, vous ne pouvez pas le faire même lorsque vous utilisez un foreach (var sss in new List<MyStruct>())
Voir Daniel Earwicker de réponse.

OriginalL'auteur Alexandre | 2011-10-27