2017-05-09 161 views
-1

你好有一个问题,当试图调用另一个方法时,将ref元素作为参数。方法“replaceWordInLine”创建新的Line,我在方法“findLine”中调用它。我应该给“replaceWordInLine”方法行参数,只是不知道如何与ref做到这一点。用ref方法调用方法里面的关键字

findLine(string dataFile, ....) 
{ 
    string[] text = System.IO.File.ReadAllLines(dataFile.....; 
    foreach(string line in text) 
    { 
    replaceWordInLine(ref , disconnectors, word, wordBegining); 
    } 
} 


replaceWordInLine(ref string e, string disconnectors, string word, int wordBegining) 
    { 
     findWordInLine(e, s, out word, out wordBegining); 
     string findWord = word; 
     StringBuilder newLine = new StringBuilder(); 
     e.Remove(word.Length,pr); 
     newLine.Append(word + " " + e); 
    } 
+0

'replaceWordInLine(参考线,隔离开关,字,wordBegining);'? – AgentFire

+0

@AgentFire,试了一下。显示错误:不能使用'line'作为ref或out值,因为它是foreach迭代变量。 – Lucas

+0

代码不是真正完整的......'s'不确定,'断线器未被使用,'e.Remove(word.Length,pr)'没有意义 – grek40

回答

2
string s = line; 
replaceWordInLine(ref s, disconnectors, word, wordBegining); 
+0

准确地说,我在评论中输入的内容太晚了,这就是答案 - 简单而简单。 – ColinM

+1

@Daniel Fruhauf,谢谢,它有帮助 – Lucas

2

你可以使用一个用于i循环,而不是一个foreach

这的: 字符串[]文本= System.IO.File.ReadAllLines(数据文件.....; 的foreach (在文本串线) { replaceWordInLine(参考文献,隔离器,字,wordBegining); }

将成为:

string[] text = System.IO.File.ReadAllLines(dataFile.....; 
    foreach(int i =0; i<text.Length; i++) 
    { 
    replaceWordInLine(ref text[i] , disconnectors, word, wordBegining); 
    } 

,你是好去

+0

Ferreti,你也想过这个,但我想象它会逐字选择一个字,并且只用foreach, – Lucas