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

C# 如何在数组中多次声明相同的字符串值?,c#,arrays,repeat,C#,Arrays,Repeat,我的问题是关于C中相同的多个数组值。 因为玫瑰经有五十年的历史,我想让价值arr[1,2,…10,14,16,…23]=圣母玛利亚;我可以在字符串数组中写出每个值,但是我觉得减少代码的大小会使程序在限制其大小方面更有效。大多数涉及重复值的问题都倾向于避免此类问题,但这涉及不同的情况和不同的类型,如int。我的问题正好相反,我使用字符串并希望在多个索引数中重复相同的值。我认为可以有多种用途,例如windows窗体程序,它会向用户重复一步一步的指令,以使用户遵循这些指令,而这些指令可能会显示重复的字

我的问题是关于C中相同的多个数组值。 因为玫瑰经有五十年的历史,我想让价值arr[1,2,…10,14,16,…23]=圣母玛利亚;我可以在字符串数组中写出每个值,但是我觉得减少代码的大小会使程序在限制其大小方面更有效。大多数涉及重复值的问题都倾向于避免此类问题,但这涉及不同的情况和不同的类型,如int。我的问题正好相反,我使用字符串并希望在多个索引数中重复相同的值。我认为可以有多种用途,例如windows窗体程序,它会向用户重复一步一步的指令,以使用户遵循这些指令,而这些指令可能会显示重复的字符串值

1有没有办法用多个相同的值对数组进行编码,还是像我的示例一样只写出每个值

如果使用字符串[]arr={我们的父,万福马利亚,万福马利亚,…,我的耶稣啊,愿荣耀归给我们。};与我声明每个索引字符串值的示例不同,如何对其进行编码以在声明的字符串数组中插入相同的值

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();
}

无需过分复杂,只需将值赋给字符串变量,然后在声明数组时使用它。通过某种方式减少源代码的大小,或者通过使用一种聪明的方法填充数组,您将不会在性能上获得任何好处。如果有数千个或更多的地方需要放置重复的字符串,您可能会获得几毫秒的时间,但您将无法清楚地知道自己在做什么

因此,对于问题的第二部分,可以这样声明数组:

string repeatedString = "I'm repeating";
string[] arr = 
{ 
    "Value 1", 
    "Another string", 
    repeatedString, 
    "some more", 
    repeatedString, 
    repeatedString, 
    "Yet another" 
};

也许您可以为您的场景编写一个简单的方法:

public void SetValuee(int start,int end,string value,ref string[] array)
{
   for(int i=start;i<=end;i++)
   { 
       array[i] = value;
   }
}
您可以将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,而不仅仅是number;我建议您始终这样做,作为一种良好的做法,不要反复重复相同的常数。

使用Enumerable.repeat方法

 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();
var array = Enumerable.Repeat("Hail Mary", count).ToArray();
这将创建一个计数项数组,其中每个计数项都将等于Hail Mary。然后把不同的值放在它们应该在的地方

array[0] = "Our Father";

有关此方法的更多信息,请查看。

还有另一个答案,您可以使用第二个数组和foreach循环


嗯,通常,您会从文件或嵌入式资源加载这样的数据,等等。。您不必要地将代码和数据组合在一起。您是否发现提供的答案中有任何一个有用?实际上,我发现提供的许多答案都有用。我只能选择一个人的答案,还是可以选择多个用户来回答我的问题?@ColumcilleOFS不幸的是,你只能选择其中一个。当你获得足够的声誉时,你至少可以投更多的票。
array[0] = "Our Father";
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...";