Output d'une fonction double[] + bool

Résolu
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 4 févr. 2011 à 10:22
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 4 févr. 2011 à 12:28
Bonjour,
Je voudrais si il existe un moyen pour qu'une fonction me renvoie comme paramètre de sortie 2 type différents double[] et bool.
Je pensais essayer avec
private Dictionary<double[], bool> LimiteVector(double ex,double ey,double ez,Int32 H0 )
{
Dictionary<double[], bool> Output = new Dictionary<double[], bool>();

return Output;
}
Mais je ne sais pas comment pointer faire
Output.Double[2] = 23.335325
ou
Ouput.Bool = false;

ou alors utiliser les paramètres in et out des fonctions.

Qu'elle serait la méthode la plus propre.

Merci,

www.survey-copter.com

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
4 févr. 2011 à 12:28
Salut

Je vois plusieurs solutions :
1) Tu crées une simple structure comme ça :
public struct SRetour
{
    public bool Bool { get; set; }
    public double[] Double { get; set; }
}

Tu pourras ainsi créer ta variable Output de type SRetour et l'utiliser avec Output.Bool ou Output.Double
(Normalement, tu ne peux pas utiliser de type anonyme en retour d'une méthode.)

2) Tu passes un paramètre out
C'est comme ref, sauf que ta variable n'a pas besoin d'être initialisée
private double[] LimiteVector(double ex, double ey, double ez, int H0, out bool outputbool)
{
//...
outputbool = false;
//...
}

et tu l'appelles ainsi :
bool monBool;
double[] monDoubleTab = LimiteVector(1.0, 1.0, 1.0, 2, out monBool);
// Et là, monBool a la bonne valeur

3) Les tableaux sont un type par valeur, donc ils peuvent être null. Est-ce que cela ne pourrait pas te suffire ? (je ne sais pas exactement ce que tu cherches à faire). Je rappelle, si par exemple c'est pour chaque double que tu as besoin d'avoir la possibilité d'une valeur null, que tu peux créer une variable par valeur nullable en ajoutant ? après le type :
double? est un double qui peut avoir la valeur null.

Quelle méthode est préférable ? Je dirais probablement la 3) si celle-ci est suffisante. Sinon, tout dépend de la correspondance entre ton bool et tes double. S'ils sont intimement liés, je dirais la 1). Si ce sont deux valeur indépendantes, la 2).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
Rejoignez-nous