這篇文章並不是真的關於下面的代碼中的錯誤,我可以想象它有幾十種解決方法,它更主要與簡單性,優雅性和性能有關!如何傳遞一個常量字符串參考到函數
我不得不做一個非常簡單的文本解析,這樣的事情:
string ParseWord(ref string Line, ref int Pos) {
// Inspect Line from Pos, increment Pos and return next Word
}
void ParseText(string[] Lines) {
foreach (string Line in Lines) {
int Pos = 0;
string Word;
while ((Word = ParseWord(ref Line, ref Pos)) != null) {
// Do something with Word
}
}
}
遺憾的是它不工作的方式,因爲「的foreach」變量「線」是通過引用傳遞這是不允許的。如你現在可能已經注意到的,我通常是一個C++程序員。 我的想法是,傳遞字符串作爲參考會更快,因爲它不必每次都被複制。
第一個問題:這個假設在c#中仍然有效嗎?
第二個問題:我如何傳遞到「行」的引用,並仍然使用「的foreach」 - 沒有「常量」,在C#
第三個問題:我在想一些不適當的C++的方式和喜歡的事那我們會在c#中完成不同的工作嗎?
我明白了。字符串的行爲類似於值類型,但它們確實是參考的。應該有這個想法。它的基本原理與我一直將自己構建到自己的C++字符串類中的機制相同:-) –