Comme je comprends par défaut (objet) où 'objet' est un type de référence renvoie toujours null, mais puis-je spécifier ce qu'est un défaut? Par exemple, je veux par défaut (objet) == new object();Spécifier la valeur par défaut pour un type de référence
Répondre
n ° default(type)
retournerez toujours la même chose - un « zéro » édité "version de ce type. Pour un type de référence, il s'agit d'un descripteur d'un objet qui est toujours défini avec la valeur zéro, ce qui correspond à null
. Pour un type de valeur, il s'agit toujours de la structure avec tous les membres définis sur zéro.
Il n'existe aucun moyen de contourner ce problème - la spécification de langage est conçue de cette manière.
Edit: Quant à votre commentaire:
Juste pour pouvoir dire
FirstOrDefault()
et jamais une valeur nulle.
Je ne recommanderais pas cela dans tous les cas. Les utilisateurs s'attendent à FirstOrDefault()
pour renvoyer null
en cas d'échec. Il serait préférable d'écrire votre propre méthode d'extension:
static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
return sequence.FirstOrDefault() ?? new T();
}
Désolé, je ne suis pas Jon Skeet ...
Mais de toute façon, la réponse est « non vous ne pouvez pas »
Normalement Jon Skeet explique pourquoi (ou pourquoi pas dans ce cas) :) – PostMan
@PostMan, comme je l'ai dit, je ne suis pas Jon Skeet;). De toute façon, je ne pense pas qu'il y ait quelque chose à expliquer ici ... ce n'est tout simplement pas possible. –
Fais-le juste, tout ira bien :) Mais oui, je suis d'accord, il n'y a pas d'autre explication que tu ne peux pas. (autre que la décision de conception) – PostMan
- 1. Valeur par défaut pour une référence à un pointeur
- 2. Paramètre par défaut pour une référence de liste
- 3. Spécifier un DataTemplate vide par défaut à la place de DataTemplate 'ToString()' par défaut
- 4. Valeur par défaut d'un type à l'exécution
- 5. SQL Int type Valeur par défaut Question
- 6. La valeur par défaut pour KeyValuePair
- 7. AppSettings fallback/valeur par défaut?
- 8. effacer la valeur par défaut
- 9. Type de valeur et type de référence
- 10. Valeur par défaut pour textarea
- 11. Valeur par défaut pour la liste déroulante
- 12. Schéma XML: Définition d'une valeur par défaut pour un complexType?
- 13. Comment spécifier une valeur par défaut dynamique pour une clé dans un routeur, Zend Framework
- 14. Comment fournissez-vous un type par défaut pour les génériques?
- 15. Pour vérifier la valeur par défaut, sélectionnez la valeur!
- 16. Comment spécifier une valeur de paramètre par défaut pour une action Pylons?
- 17. std :: map valeur par défaut
- 18. Charger la valeur par défaut pour un extjs comboBox
- 19. C#: comment rechercher la valeur par défaut pour un type d'exécution?
- 20. C# - Comment tester si une instance est la valeur par défaut pour son type
- 21. Comment spécifier un param par défaut dans unix?
- 22. Action de génération par défaut pour un type de fichier
- 23. Déterminer si un type est un type de référence ou un type de valeur
- 24. Valeur par défaut pour les paramètres de fonction dans VB6
- 25. Valeur DropDownList Valeur par défaut
- 26. Effacement de la valeur vide par défaut dans un objet Combobox Winform de type: DropDownList
- 27. Est-il possible de spécifier la valeur par défaut de la clé de registre ClassID créée par regasm?
- 28. Modifier la valeur par défaut de EnableViewState
- 29. Utilisation de décorations XML pour spécifier les valeurs par défaut lors de la désérialisation
- 30. Type de codage par défaut pour la liaison wsHttp
Non, ce n'est pas possible. Pouvez-vous nous dire l'objectif final ici, c'est-à-dire pourquoi vous voudriez cette fonctionnalité? – Ani
Non. Et pourquoi auriez-vous besoin de faire cela? Si l'objet est nul, attribuez-en un nouveau! –
Juste pour être en mesure de dire FirstOrDefault() et ne jamais obtenir une valeur nulle. Je suppose que je vais écrire une nouvelle méthode d'extension alors. –