147 votes

Qu'est-ce que default (objet)? faire en C #?

Googling ne fait que trouver le mot clé, mais je suis tombé sur un code qui dit

 MyVariable = default(MyObject);
 

et je me demande ce que cela signifie ...

204voto

Marc Gravell Points 482669
  • Pour une référence de type, il retourne null
  • Pour une valeur de type autre que Nullable<T> il renvoie une initialisé à zéro de la valeur
  • Pour Nullable<T> il renvoie le vide (pseudo-null) valeur (en fait, c'est un nouvel état de la deuxième balle, mais il vaut la peine de rendre explicite)

La plus grande utilisation de l' default(T) est dans les génériques, et des choses comme l' Try... modèle:

bool TryGetValue(out T value) {
    if(NoDataIsAvailable) {
        value = default(T); // because I have to set it to *something*
        return false;
    }
    value = GetData();
    return true;
}

Comme il arrive, je l'utilise aussi dans certains de la génération de code, où il est une douleur pour initialiser les champs et les variables - mais si vous connaissez le type:

bool someField = default(bool);
int someOtherField = default(int)
global::My.Namespace.SomeType another = default(global::My.Namespace.SomeType);

19voto

Pratik Deoghare Points 9766

default mot clé retournera null pour les types de référence et zero pour les types de valeur numérique.

Pour struct s, il retournera chaque membre de la structure initialisée à zéro ou à zéro selon qu'il s'agisse de types valeur ou référence.

de MSDN

 Simple Sample code :<br>
    class Foo
    {
        public string Bar { get; set; }
    }

    struct Bar
    {
        public int FooBar { get; set; }
        public Foo BarFoo { get; set; }
    }

    public class AddPrinterConnection
    {
        public static void Main()
        {

            int n = default(int);
            Foo f = default(Foo);
            Bar b = default(Bar);

            Console.WriteLine(n);

            if (f == null) Console.WriteLine("f is null");

            Console.WriteLine("b.FooBar = {0}",b.FooBar);

            if (b.BarFoo == null) Console.WriteLine("b.BarFoo is null");

        }
    }
 

SORTIE:

 0
f is null
b.FooBar = 0
b.BarFoo is null
 

3voto

KennyTM Points 232647

Valeur par défaut de MyObject . Voir Mot-clé par défaut dans Code générique (Guide de programmation C #) (MSDN).

2voto

rahul Points 84185

Spécifie la valeur par défaut du paramètre type. Ce sera null pour les types de référence et zéro pour les types de valeur.

Voir défaut

1voto

Diego Mijelshon Points 40314

L' default mot-clé renvoie le "par défaut" ou "vide" de la valeur pour une variable du type demandé.

Pour tous les types de référence (défini avec class, delegate, etc), c'est - null. Pour les types de valeur (définie avec struct, enum, etc) c'est un des zéros de la valeur (par exemple, int 0, DateTime 0001-01-01 00:00:00, etc).

Il est principalement utilisé avec le code générique qui peut être appliqué à la fois de référence et de types de valeur, parce que vous ne pouvez pas affecter null d'une variable de type valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X