繁体   English   中英

如何在数组中多次声明相同的字符串值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM