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

问题描述 投票:0回答:6

我的问题与 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();
}
c# arrays repeat
6个回答
4
投票

为此使用

Enumerable.Repeat
方法

var array = Enumerable.Repeat("Hail Mary", count).ToArray();

这将创建一个

count
项目数组,其中每个项目都等于“Hail Mary”。然后只需将不同的值放在应该的位置即可。

array[0] = "Our Father";

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


0
投票

您可以使用

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
而不仅仅是数字;我建议您始终这样做,作为一种良好的做法(不要一遍又一遍地重复相同的常量)。


0
投票
 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();

0
投票

另一个答案,你可以使用第二个

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...";

0
投票

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

public void SetValues(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)

-1
投票

不需要使事情过于复杂,只需将值分配给字符串变量,然后在声明数组时使用它即可。通过某种方式减少源代码的大小或使用填充数组的“聪明”方法,您不会获得任何性能提升。如果有数千个或更多的地方需要放置重复的字符串,您可能会获得几毫秒的时间,但您会失去对正在做的事情的清晰度。

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

string repeatedString = "I'm repeating";
string[] arr = 
{ 
    "Value 1", 
    "Another string", 
    repeatedString, 
    "some more", 
    repeatedString, 
    repeatedString, 
    "Yet another" 
};
© www.soinside.com 2019 - 2024. All rights reserved.