2010-01-03 5 views
2

Si je déclare une variable nullable (soit via Nullable ou le symbole?) D'un type de valeur, respecte-t-elle toujours les règles des types de valeur (ie passe par valeur par défaut, désallouée quand elle tombe hors de portée, garbage collector s'exécute) ou devient-il un type de référence puisqu'il est en fait de type Nullable?Est-ce que les variables nulles C# fonctionnent toujours en tant que types de valeur?

+2

Avez-vous essayé de tester ces choses vous-même? –

Répondre

3

Oui, System.Nullable est une structure générique, c'est-à-dire un type de valeur.

+0

Je ne le dis pas d'une manière critique, mais je pense que certaines références seraient utiles ... comme l'a fait Jacob. Ils pourraient conduire le lecteur à des informations plus approfondies, lui permettant d'effectuer des connexions avec d'autres problèmes et ainsi de suite. – lmsasu

+2

J'ai tendance à ne fournir que des références à des articles qui ne sont pas accessibles en utilisant google de je me sens chanceux. Fournir un lien vers google résultat numéro 1 est un exercice inutile. –

1

Les types valeur null sont essentiellement juste un wrapper struct autour d'un type de valeur qui leur permet d'être marqués comme null.

quelque chose comme ceci:

struct Nullable<T> 
{ 
    public T Value; 
    public bool HasValue; 
} 

Je crois qu'il est en fait plus complexe que sous le capot, et le compilateur fait beaucoup de choses bien pour vous, vous pouvez donc écrire par exemple if(myInt == null). Mais oui, ils sont toujours des types de valeur.

7

La documentation est ici:

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

Comme vous pouvez le voir, la documentation décrit comme la "structure annulable", ce qui indique qu'il est un type de valeur. En outre, la documentation donne les premières lignes de la déclaration du type:

public struct Nullable<T> where T : struct, new() 

montrant à nouveau que le type est un type de valeur.

Questions connexes