C#inline条件在string 数组中

你怎么能在C#中对string []数组执行以下内联条件。 根据参数,我想包括一组字符串……或不包括。 这个问题是关于stackoverflow的这个问题的后续问题。

//Does not compile bool msettingvalue=false; string[] settings; if(msettingvalue) settings = new string[]{ "setting1","1", "setting2","apple", ((msettingvalue==true) ? "msetting","true" :)}; 

如果msettingvalue为true,我想要包含两个字符串“msetting”,“true”:否则没有字符串。

Edit1它不一定是一个键值对…如果它是5个字符串是(或不是)添加…我不认为它是那么棘手。

(也……有足够代表的人可以制作“内联条件”或“条件内联”标签吗?)

 settings = new string[]{"setting1","1", "setting2","apple"} .Concat(msettingvalue ? new string[] {"msetting","true"} : new string[0]); .ToArray() 

使用通用List

 bool msettingvalue=false; string[] settings; var s = new List(); s.AddRange({"setting1","1","setting2","apple"}); if(msettingvalue) s.AddRange({"msetting","true"}); settings = s.ToArray(); 

但是……从你的arrays看起来你最好使用不同的结构来存储这些东西。 它是你想要的关联数组。 您可以使用TupleDictionary以更易于处理的方式对设置进行建模,并且更准确地反映语义。

 bool msettingvalue=false; var settings = new Dictionary(); settings.Add("setting1","1"); settings.Add("setting2","value2"); if(msettingvalue) settings.Add({"msetting","true"); 

……最后两行甚至可以。

 settings.Add({"msetting",msettingvalue.ToString());