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