[英]How to declare the same string value multiple times inside an array?
我的问题与C#中相同的多个数组值有关。 由于念珠有五十年,我想使值成为“ arr [1,2,... 10,14,16,... 23] =“冰雹玛丽”;“ 我可以将每个值写到字符串数组中,但是感觉减少代码的大小将使程序在限制其大小方面更加有效。 多数涉及重复值的问题往往会被要求避免这种情况,但这会涉及不同的情况和不同的类型,例如int。 我的正好相反,我使用字符串,并希望在多个索引号中重复相同的值。 我认为可以有多种用途,例如Windows窗体程序,它会向用户重复执行逐步的说明,从而可能会显示重复的字符串值。
1)有没有一种方法可以对具有多个相同值的数组进行编码,还是像我的示例那样将每个值都写出来?
2)如果使用string[] arr={"Our Father", "Hail Mary", "Hail Mary",..., "Glory Be", "O My Jesus"};
而不是我的示例声明每个索引的字符串值,而是如何将其编码为在声明的字符串数组中插入相同的值?
int counter=0;
private void button1_Click(Object sender, EventArgs e)
{ string[] arr= new string[12];
arr[0]="Our Father...";
arr[1]="Hail Mary...";
arr[2]="Hail Mary...";
...
arr[11]="Glory Be...";
arr[12]="O My Jesus...";
textBox1.Text = arr[counter];
counter++;
textBox1.Text = arr[counter-1].ToString();
}
为此使用Enumerable.Repeat
方法
var array = Enumerable.Repeat("Hail Mary", count).ToArray();
这将创建一个count
项目数组,其中每个count
项目均等于“冰雹玛丽”。 然后只需将不同的值放在应有的位置即可。
array[0] = "Our Father";
有关此方法的更多信息,请查看MSDN 。
也许您可以为您的方案编写一个简单的方法:
public void SetValuee(int start,int end,string value,ref string[] array)
{
for(int i=start;i<=end;i++)
{
array[i] = value;
}
}
并使用:
SetValues(1,12,"Hail Mary...",ref arr)
您可以将switch
语句用于以下目的:
string[] arr= new string[23];
for (int i = 0; i < arr.Length; i++) {
switch (i) {
case 0:
array[i] = "Our Father...";
break;
case 11:
arr[11]="Glory Be...";
break;
case 11:
arr[12]="O My Jesus...";
break;
default:
array[i] = "Hail Mary";
break;
}
}
从某种意义上说,最常见的条目将是"Hail Mary"
,您将其作为默认案例,然后分别处理其余案例。
另请注意,我使用的是arr.Length
而不是数字; 我建议您始终将此作为一种好习惯(不要一遍又一遍地重复相同的常数)。
string[] arr = { "Our Father", "Hail Mary", "Hail Mary", "Glory Be", "O My Jesus" };
var list = arr.ToList();
list.Insert(2, "Hail Mary");
arr = list.ToArray();
另一个答案是,您可以使用第二个array
和一个foreach
循环
int[] index = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
string[] arr = new string[13];
foreach (int i in index)
{
arr[i] = "Hail Mary...";
}
arr[0] = "Our Father...";
arr[11] = "Glory Be...";
arr[12] = "O My Jesus...";
无需过于复杂,只需将值分配给字符串变量,然后在声明数组时使用它即可。 通过某种方式减小源代码的大小或使用填充数组的“聪明”方法,您将不会获得任何性能上的提高。 如果有成千上万个地方需要重复放置字符串,则可能会花费几毫秒的时间,但您可能会不清楚所执行的操作。
因此,对于问题的第二部分,您可以这样声明数组:
string repeatedString = "I'm repeating";
string[] arr =
{
"Value 1",
"Another string",
repeatedString,
"some more",
repeatedString,
repeatedString,
"Yet another"
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.