この投稿は、実際には下のコードのバグに関するものではありません。私自身、それを解決する方法が何十もあると想像できますが、主にシンプルさ、エレガンス、パフォーマンスに関連しています!
次のような非常に単純なテキスト パーサーを実行する必要がありました。
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」変数「Line」は許可されていない参照によって渡されるため、そのようには機能しません。
お気づきかもしれませんが、私は通常 C++ プログラマーです。私の考えでは、文字列を参照として渡す方が高速であると考えていました。これは、毎回コピーする必要がないためです。
最初の質問: その仮定は c# でも有効ですか?
2番目の質問:その「行」への参照を渡し、「foreach」を引き続き使用するにはどうすればよいですか-c#には「const」はありません
3 番目の質問: 不適切な C++ の方法を考えているのでしょうか?