Erreur de dépassement de pile en C#, mais comment le résoudre?

J'ai couru dans une très intéressante d'exécution d'un bug qui génère un voyou de débordement de pile.

J'ai défini une structure comme suit:

public enum EnumDataType { Raspberry, Orange, Pear, Apple };

public class DataRequest
{
    public long DataSize 
    { 
        get { return 0; } 
        set { DataSize = value; } 
    }

    public EnumDataType DataType  
    { 
        get { return EnumDataType.Apple; } 
        set { DataType = value; } 
    }
}

Les lignes suivantes fonctionnent parfaitement:

DataRequest request = new DataRequest();
request.DataSize = 60;

Cependant, quand je marche sur la ligne suivante dans le code, il génère un débordement de pile:

request.DataType = EnumDataType.Raspberry;

Bien sûr, je peux le résoudre en supprimant les valeurs par défaut, ou l'utilisation de l'auto get/set, mais j'en ai besoin pour être à la fois lisible et inscriptible, et de retourner une valeur par défaut - des idées?

Je m'attends à ce invoquant de ces organismes de normalisation pour provoquer un débordement de pile, quelle que soit la valeur que vous avez fournies. Vous pourriez peut-être offrir une courte mais complète du programme est de démontrer le premier "[le travail]ing parfaitement" ?
Je pense que tout le monde à un certain point l'a fait 🙂
J'ai toujours trouvé Stackoverflow erreurs pour être tout à fait amusant erreurs quand elles surviennent, depuis le peu de fois où je les ai vus, ils comportent généralement de deux ou plusieurs méthodes qui sont magnifiquement nommé inverses les uns des autres. Au lieu de contenir tout le code fonctionnel, ils font référence les uns aux autres, ce qui serait tellement merveilleux si cela a fonctionné, mais nope. L'avenir est encore à venir.

OriginalL'auteur Contango | 2010-10-27