0 votes

Comportement étrange du C#

J'ai une structure personnalisée :

struct A
{
    public int y;
}

une classe personnalisée avec un constucteur vide :

class B
{
    public A a;
    public B()
    {
    }
}

et voici le principal :

static void Main(string[] args)
{
    B b = new B();
    b.a.y = 5;//No runtime errors!
    Console.WriteLine(b.a.y);
}

Lorsque j'exécute le programme ci-dessus, il ne me donne aucune erreur, bien que je n'aie pas initialisé la structure A dans le constructeur de la classe B.. 'a=new A();'.

7voto

Konrad Rudolph Points 231505

Je n'ai pas initialisé la structure A dans le constructeur de la classe B.

Le C# le fait pour vous. Tous les membres des classes sont initialisés à leur valeur par défaut, sauf si vous leur attribuez d'autres valeurs dans leur déclaration ou dans le constructeur.

Pour class la valeur par défaut est null et vous obtiendrez une erreur en utilisant cette instance. Cependant, pour struct (qui sont no contrairement aux instances de classes), il n'existe pas de null valeur. La valeur par défaut d'un struct est une instance dont tous les champs ont été initialisés par défaut.

C'est pourquoi votre code fonctionne.

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