Je veux créer une fonction générique simple utilisation: p> ma question est comment programmez-vous le code à définir ces valeurs c.-à-d. Les codes manquants dans la section de commentaires. P> Merci pour toute aide. P> P>
4 Réponses :
On dirait dans ce cas peut-être que vous le faites pour essayer d'éviter la boxe? Difficile de dire sans plus d'informations, mais pour cet exemple spécifique, ce serait beaucoup plus facile et probablement moins de bug-sujette à simplement utiliser la surcharge de la méthode: à des fins d'apprentissage spécifiquement ce que < em> est em> mal ici, vous devez avoir une valeur à un objet avant de la jeter sur le type générique: p> quel imo est assez méchant et devrait Soyez un dernier recours - certainement ne rendez certainement pas votre code de nettoyant. P> Chaque fois que vous effectuez la vérification des paramètres génériques, c'est une bonne indication des génériques ne sont pas la bonne solution à votre problème. strong> Faites des vérifications de type de paramètre générique rend votre code plus complexe, pas plus simple. Il rend une méthode responsable de différents comportements basés sur le type, au lieu d'une série de méthodes simples faciles à changer sans affecter accidentellement les autres. Voir Principe de responsabilité unique A >. p> p>
Voici un moyen: mais ce code sent vraiment mauvais et va contre le point de générique (utilisez plutôt des méthodes surchargées). J'espère que cela ne se retrouve pas dans le code de production quelque part et est simplement pour l'édification. P> p>
Merci beaucoup; cela marche. La raison pour laquelle j'utilise une approche générique est de simplifier mon code. Parce que le "code d'affectation" n'est nécessaire que pour un type spécifique (par exemple, une chaîne); Il serait mauvais de créer des fonctions surchargées pour tous les types possibles. Résultat = Par défaut (T) // est le comportement courant
Je ne suis pas d'accord avec toi. Je pense que la surcharge est exactement pour cela. Utilisez des génériques uniquement si nécessaire.
Tout d'abord, c'est un très mauvais modèle. Vous ne devriez pas utiliser ce genre de motif. Peut-être que si vous décrivez ce que vous voulez vraiment réaliser, il y aura de meilleures réponses.
Code ci-dessous fonctionne, mais comme je l'ai dit écrire un code de cette manière est une mauvaise idée. P>
int value; string text; Assign(out value); Assign(out text);
public T GetObject<T>(string val) { T _object = default(T); _object = (T)Convert.ChangeType(val, typeof(T)); return _object; }