1
votes

Comment ajouter un élément au tableau en C #

J'ai une boucle qui génère environ 150 chaînes uniques. Comment puis-je ajouter ces chaînes à un tableau?

Voici ma boucle:

for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    Console.WriteLine(releaseUri);
}

La Console.WriteLine (releaseUri) imprime chaque URL . mais je voudrais stocker le releaseUri dans un tableau.


1 commentaires

myArray [intCounter] = releaseUri;


5 Réponses :


0
votes

Vous pouvez utiliser un tableau dans ce cas car vous connaissez le nombre d'éléments. Initialisez-le et définissez les éléments au fur et à mesure

var arr = new string[projectCount];
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    Console.WriteLine(releaseUri);
    arr[intCounter] = releaseUri;
}


0 commentaires

0
votes

Si vous projectCount , vous pouvez créer un tableau avec les numéros d'élément nécessaires et définir simplement ses éléments par index.

var urls = project
              .value
              .Select(p => "http://tfs1:8080/tfs/defaultcollection/" + p.projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z")
              .ToArray();

Ou vous pouvez simplement utiliser un tableau dynamique et ajoutez des éléments à l'aide de Add () pour pouvoir changer la taille du tableau après l'initialisation.

var urls = new List<string>();
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    urls.Add(releaseUri);
}

Aussi vous n'avez pas besoin d'utiliser des boucles et pouvez résoudre votre problème avec une seule chaîne de code en utilisant LINQ :

var urls = new string[projectCount];
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    urls[i] = releaseUri;
}


0 commentaires

10
votes

Les listes sont normalement meilleures que les tableaux.

    var releaseUris = new List<string>();
    foreach(var project in projects)
    {
        var releaseUri = $"http://tfs1:8080/tfs/defaultcollection/" + project.projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + project.date + "T00:00:00.00Z";
        releaseUris.Add(releaseUri);
    }


2 commentaires

Hein, rly? L'initialisation d'une nouvelle instance de List sans paramètres crée un objet pour stocker 4 éléments. Lorsque vous ajoutez le cinquième élément, List allouera un nouveau tableau pour stocker 8 éléments, puis lorsque vous ajoutez le 9-ème, il en autorisera un autre à stocker 16 et ainsi de suite. Ce n'est normalement pas mieux si vous connaissez la longueur du tableau et que vous ne changez pas de tableau après l'initialisation


Pour rappel, vous pouvez transmettre la taille au constructeur de la liste: new List (projectCount)



1
votes

@ShaneP,

Vous devrez déclarer un tableau en dehors de la boucle for comme ceci.

string[] releaseUriArray = new string[projectCount];

for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    // Here you are adding the releaseUri strings to the releaseUriArray
    releaseUriArray[intCounter] = releaseUri;

} 

// print your uris from the array here
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var releaseUri = releaseUriArray[intCounter];
    Console.WriteLine(releaseUri);
} 


0 commentaires

0
votes

Un moyen simple de le faire serait de créer un Uri de modèle contenant des espaces réservés pour le nom et la date du projet (en utilisant {0} et {1} dans la chaîne ), puis avec quelques méthodes d'extension Linq ( Select et ToList ) et string.Format , vous pouvez et générer vos chaînes d'un Enumerable.Range:

// Project name and date will be inserted where {0} and {1} are below
string uriTemplate = "http://tfs1:8080/tfs/defaultcollection/{0}/_apis/release/" +
    "releases?api-version=3.0-preview.2&searchText=911&minCreatedTime={1}T00:00:00.00Z";

string[] releaseUris = Enumerable.Range(0, projectCount)
    .Select(i => string.Format(uriTemplate, project.value[i], date))
    .ToArray();


0 commentaires