Question

Bonjour, j’ai un problème avec les tableaux c #. J'ai besoin d'un tableau pour stocker des données là-bas ... Mon code est que

double[] ATmittelMin;
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);

Mais le compilateur dit: var non défini Comment puis-je définir un tableau double sans taille fixe? Merci beaucoup!

Était-ce utile?

La solution

Les tableaux ont toujours une taille fixe et doivent être définis comme suit:

double[] items1 = new double[10];

// This means array is double[3] and cannot be changed without redefining it.
double[] items2 = {1.23, 4.56, 7.89};

La classe List<T> utilise un tableau en arrière-plan et le redéfinit lorsqu'elle manque d'espace:

List<double> items = new List<double>();
items.Add(1.23);
items.Add(4.56);
items.Add(7.89);

// This will give you a double[3] array with the items of the list.
double[] itemsArray = items.ToArray();

Vous pouvez parcourir un <=> comme vous le feriez pour un tableau:

foreach (double item in items)
{
    Console.WriteLine(item);
}

// Note that the property is 'Count' rather than 'Length'
for (int i = 0; i < items.Count; i++)
{
    Console.WriteLine(items[i]);
}

Autres conseils

D'après ce que je vois, vous n'avez pas déclaré la variable zaehlMittel. Je suppose que c’est ce dont se plaint le compilateur.

En dehors de cela, même si vous pouvez bien sûr déterminer la valeur de cette variable par programmation, le moment où vous souhaitez créer un tableau de sa taille doit être connu. C’est ainsi que fonctionnent les tableaux.

Si vous ne pouvez pas le faire facilement, nous vous suggérons d'utiliser une sorte de structure de données dynamique, telle qu'une liste ou un ensemble. Ensuite, une fois que tous les éléments ont été ajoutés, vous êtes bien entendu toujours libre de créer un tableau à partir de celui-ci, car à ce moment-là, vous connaissez le nombre d'éléments (même s'il existe des méthodes simples comme toArray() qui s'en chargeront même). ).

Vous devez instancier le tableau avant de l'utiliser:

double[] ATmittelMin = new double[10];
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);

La solution évidente qui s'impose est d'utiliser une liste:

List<double> ATmittelMin = new List<double>();
ATmittelMin.Add(Gradient(x, xATMax, y, yATMax);

Mais si vous ne voulez pas convertir une liste en tableau, vous pouvez agrandir le tableau ultérieurement:

double[] ATmittelMin = new double[10];
// Some code
int index = some_value;
if (index >= TmittelMin.Length)
{
    Array.Resize(ATmittelMin, index+5);  // So we're not constantly resizing the array
}

Ce n'est pas idéal, car vous effectuez une grande partie du travail effectué List en coulisse - probablement beaucoup plus efficacement que vous ne le pouvez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top