2017-02-20 58 views
2

即时通讯制作语音别名程序。我试图让它添加命令。 你基本上知道要做一串你想要的字符串 string mystring =“string1”,“string2”; 我怎么能够像“string3”那样添加它 string mystring =“string1”,“string2”,“string3”; 这里是我的代码:C#将字符串加在一起

List<string> myCollection = new List<string>(); 
      myCollection.Add("hello"); 
      myCollection.Add("test"); 
      string final = string.Join(",", myCollection.ToArray()); 
      richTextBox1.AppendText(final); 
      sp.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(new String[] { "" + final })))); 
+0

你遇到的问题是什么? – CodingYoshi

+0

@CodingYoshi当我这样做时,我没有得到2 seprete字符串。我得到1个字符串,例如hello,test –

+0

您应该阅读[问],然后根据[问]页面编辑您的问题,以便更清楚地理解。 – Enigmativity

回答

3

你调用API需要string阵列。如果您知道您将传递多少个字符串,请不要使用List<string>。这将帮助您避免必须将List<string>转换为string[]。这是它是如何工作的:

var myCollection = new string[2]; 
myCollection[0] = "hello"; 
myCollection[1] = "test"; 
sp.LoadGrammar(new Grammar(new GrammarBuilder(myCollection))); 

如果你不知道你有多少串路过然后用List<string>这样的:

var myCollection = new List<string>(); 
myCollection.Add("hello"); 
myCollection.Add("test"); 

然后,你需要一个List<string>转换为string[] ,只需拨打ToArray<string>()在您的收藏这样的:

var myCollectionAsArray = myCollection.ToArray(); 
sp.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(myCollectionAsArray)))); 

如果你知道你会经过多少条琴弦,你是什么意思?

如果您正在检查某些动态条件(仅在运行时已知的条件)才能将项添加到选项集合中,那么您将需要一个List<string>。例如:

var myCollection = new List<string>(); 

myCollection.Add("hello"); 
if (someCondition) 
{ 
    // this will only be known at runtime 
    myCollection.Add("test"); 
} 
+0

谢谢!奇迹般有效! –