[英]Assigning values to C# string array based on parameter
在C#中,我有一个值的字符串数组。 但是,基于参数,数组不应包含两个值,而应包含所有相同的其他值。 解决这个问题的正确方法是什么? (我可以使用列表...但我希望有更好的方法)
示例代码:
bool msettingvalue=false;
string[] settings;
if(msettingvalue)
settings = new string[]{
"setting1","1",
"setting2","apple",
"msetting","true"};
else
settings = new string[]{
"setting1","1",
"setting2","apple"};
//code that goes through settings
将数组分配给设置的正确方法是什么? 所有值都将相同,即如果msettingvalue为false,则应包括某些设置。 (如果想到更好的标题,则可以更改标题)。
Edit1理想情况下,我想使用string []数组而不是字典,因为它的速度更快...而且我要依次遍历数组,因此不需要键索引。
Edit2我问了一个后续问题,希望有一种使用内联条件的方法。
我强烈认为您应该改用Dictionary<string, string>
。
然后,您可能会:
bool msettingValue = false;
Dictionary<string, string> settings = new Dictionary<string, string> {
{"setting1", "1"},
{"setting2", "apple"},
}
if(msettingValue) {
settings.Add("msetting", "true");
}
你可以这样:
Dictionary<string,string> settings = new Dictionary<string,string>();
if (msettingValue) {
settings["msetting"] = "true";
}
settings["setting1"] = "1";
settings["setting2"] = "apple";
如果您确实不想使用字典,则可以使用以下功能:
private static string[] AddSettings(ref string[] settings, params string[] SettingsToAdd)
{
int length = SettingsToAdd.Length;
if (length%2 !=0)
{
throw new ArgumentException("Invalid number of elements");
}
int OldLength = settings.Length;
int NewLength = settings.Length + length;
Array.Resize(ref settings, NewLength);
for (int i = OldLength; i < NewLength; i++)
{
settings[i] = SettingsToAdd[i - OldLength];
}
return settings;
}
编辑:或此版本,根据您其他帖子的答案:
private static string[] AddSettings(ref string[] settings, params string[] SettingsToAdd)
{
int length = SettingsToAdd.Length;
if (length%2 !=0)
{
throw new ArgumentException("Invalid number of elements");
}
else
return settings.Concat(SettingsToAdd).ToArray();
}
及其用途:
bool msettingvalue = true;
string[] settings;
settings = new string[]{
"setting1","1",
"setting2","apple"};
if (msettingvalue)
{
settings= AddSettings(ref settings,"setting1", "value1", "setting2", "value2", "setting3", "value3");
}
然后,您可以根据需要添加任意多个值,并且计数必须为2的倍数,否则,将引发异常
为什么不使用公共元素构建数组,如果bool settings变量为true,则添加额外的内容?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.