Disons que j'ai un tableau dont j'ai besoin pour stocker des valeurs de chaîne ainsi que des valeurs doubles. Je sais que je peux stocker les doubles en tant que chaînes, et juste traiter les conversions, mais est-il possible d'utiliser un tableau avec deux types de données?Comment stocker des données de tableau mixte?
Répondre
Vous pouvez utiliser object[]
et effectuer une vérification de type. Vous obtiendrez un peu de boxe/unboxing lors de l'accès aux doubles, mais ce sera plus rapide que double.Parse()
de toute façon.
Une alternative est de créer une classe avec les deux types et un marqueur:
class StringOrDouble
{
private double d;
private string s;
private bool isString;
StringOrDouble(double d)
{
this.d = d;
isString = false;
}
StringOrDouble(string s)
{
this.s = s;
isString = true;
}
double D
{
get
{
if (isString)
throw new InvalidOperationException("this is a string");
return d;
}
}
string S
{
get
{
if (!isString)
throw new InvalidOperationException("this is a double");
return s;
}
}
bool IsString { get { return isString; } }
}
puis créer un tableau de StringOrDouble. Cela vous évitera de faire du typage et de la boxe, mais aura une mémoire plus importante.
^est ce que vous décrivez ici une structure? – sooprise
utilisation sûre:
object[], ArrayList, or List<Object>;
Vous aurez à jeter, et probablement payer une pénalité de boxe pour les doubles, mais ils vous permettront de stocker deux types différents.
object[]
et ArrayList
sont deux options décentes; Cela dépend si vous avez besoin d'un tableau traditionnel de longueur fixe ou d'un vecteur (tableau de longueur variable). En outre, je voudrais "envelopper" l'un d'eux dans une classe personnalisée qui a fait une vérification de type, si les cordes et les doubles sont les seules choses que vous pouvez gérer, et vous devez être en mesure de les sortir en tant que cordes et doubles.
pas l'utilisation la plus efficace, mais que diriez-vous de flexibilité:
var a = new object[] {1,2,3,"paul",5.5}
ou même
var a = new object[] {1,2,3,"paul",5.5, new List<string>() {"apple","banana","pear"} }
- 1. Comment stocker un tableau mixte dans des données de base
- 2. stocker des données tableview dans un tableau
- 3. Comment stocker des données multilingues?
- 4. Comment séparer et stocker des données dans un tableau?
- 5. PHP: Comment stocker des données XML dans un tableau?
- 6. multidimensionnel mixte associatif/décalage de tableau numérique
- 7. alpha/tableau numérique Trier mixte
- 8. Stocker des données de formulaire dans un tableau?
- 9. Comment redis stocker des données
- 10. Comment stocker des données localement?
- 11. Puis-je stocker des données de tableau sérialisables dans DataColumn?
- 12. Comment stocker des données dans deux tables
- 13. Données de codage de type mixte?
- 14. Conversion d'objet mixte/tableau en JSON
- 15. Comment stocker des données de la base de données dans un tableau multidimensionnel
- 16. comment stocker des données d'une table de base de données dans un tableau dans zend
- 17. comment stocker des données de tableau php dans la base de données mysql
- 18. JavaScript boucles pour stocker des données dans un tableau
- 19. Valeur numérique MAX du tableau mixte
- 20. Comment stocker des données pour une vue
- 21. Stocker des données efficacement
- 22. comment stocker les données de l'objet curseur dans un tableau
- 23. Comment stocker les données de chaîne en tableau avec délimiteur
- 24. stocker des données dans javascript
- 25. Comportement d'indexation mixte pour un tableau typedef?
- 26. Comment un type de données mixte (int, float, char, etc.) peut-il être stocké dans un tableau?
- 27. Où stocker des données?
- 28. ASP.NEt stocker des données
- 29. Javascript: Comment vérifier l'entrée d'un utilisateur mixte par rapport à un tableau d'objets de données?
- 30. javascript stocker des valeurs de tableau
Combien la performance est importante? Si c'est le cas, j'aurais pu essayer d'écrire une classe personnalisée en les stockant séparément mais en les exposant comme une seule. – Aliostad
comment pouvez-vous détecter si c'est un double ou une chaîne que vous retirez. Sont-ils toujours dans le même ordre ou? –