[英]How to add item to array in C#
我有一个生成大约 150 个唯一字符串的循环。 如何将这些字符串添加到数组中?
这是我的循环:
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);
}
Console.WriteLine(releaseUri)
打印每个 url。 但我想将 releaseUri 存储在一个数组中。
列表通常比数组好。
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);
}
@ShaneP,
您需要像这样在 for 循环之外声明一个数组。
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);
}
在这种情况下,您可以使用数组,因为您知道元素的数量。 初始化它并随时设置项目
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;
}
如果您现在projectCount
那么您可以创建一个具有所需元素编号的数组,并只需按索引设置其项目。
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;
}
或者您可以只使用动态数组并使用Add()
方法添加元素,以便能够在初始化后更改数组大小。
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);
}
此外,您无需使用循环,只需使用LINQ 1 串代码即可解决您的问题:
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();
一种简单的方法是创建一个模板 Uri,其中包含项目名称和日期的占位符(在字符串中使用{0}
和{1}
),然后使用一些Linq
扩展方法( Select
和ToList
)和string.Format
,您可以从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();
列表会更好,因为您不知道要处理多少个项目。 看起来像这样的List<String> myList = new List<String>();
然后只需myList.Add(releaseURi);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.