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?
Répondre
Oui, System.Nullable est une structure générique, c'est-à-dire un type de valeur.
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
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. –
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.
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.
- 1. Types nullables en tant que propriété
- 2. en passant les noms de variables en tant que chaîne
- 3. Exporter C#defines en tant que variables shell
- 4. variables en tant que paramètres dans les options de champ
- 5. Modélisation d'enregistrements de base de données en tant que types
- 6. Valeur de codage en tant que base64
- 7. Variables en tant que commandes dans les scripts bash
- 8. Collections en tant que décorateurs en C#
- 9. C++: Imprimez valeur ENUM en tant que texte
- 10. C# SQL Top en tant que paramètre
- 11. Les opérateurs en tant que paramètres de méthode en C#
- 12. OAuth en C# en tant que client
- 13. Nom du serveur SQL des colonnes en tant que variables
- 14. Raccourcir la valeur de l'URL en tant que variable Javascript
- 15. Vérifiez la longueur du champ en tant que types d'utilisateurs
- 16. Les scripts AutoIt, exécutés en tant que service, fonctionnent-ils pour les actions de l'interface graphique?
- 17. Passage d'un tableau de chaînes en tant que paramètre dans les types de python
- 18. Dois-je toujours insérer un InputStream en tant que BufferedInputStream?
- 19. Attraper types d'exception donnés en tant que paramètres de type en C# 2.0
- 20. C# - Image en tant que bouton cliquable
- 21. Panneau C# en tant que conteneur MDI
- 22. Comment convertir une valeur entière en valeur binaire en tant que chaîne en C#?
- 23. Entité 4.0 Valeur de diffusion en tant que DateTime
- 24. Interprète Python en tant que classe C++
- 25. Dictionnaire C# en tant que ListBox.DataSource
- 26. .NET en tant que client, Java en tant que serveur
- 27. Activer l'application C en tant que Webservice
- 28. C++ passe ENUM en tant que paramètre
- 29. nBuilder ne remplit que les types de valeur
- 30. comment initialiser le dictionnaire en tant que paire (clé, valeur, valeur) en C#
Avez-vous essayé de tester ces choses vous-même? –