簡體   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