1

関数を作成しましたが、この関数は新しい文字列ではなく古い文字列を返します。古い文字列で何かをしたときに新しい文字列を返す方法がわかりません

例:

public string TestCode(string testString)
{

// Here something happens with the testString


//return testString; <-- i am returning still the same how can i return the new string //where something is happened with in the function above

}
4

3 に答える 3

5

// ここで、testString で何かが起こります

文字列で何をしているのかを確認してください。それをtestStringlike に割り当て直しています。

testString = testString.Replace("A","B");

文字列は不変であるため。

次のような関数を呼び出していると思います。

string somestring = "ABC";
somestring = TestCode(somestring);
于 2013-03-05T09:05:43.463 に答える
0

String不変です(つまり、変更できません)。あなたはこのようにしなければなりません

      myString = TestCode(myString) 
于 2013-03-05T09:05:50.967 に答える
0

新しい文字列値を変数 (またはパラメーターtestString) に割り当てていることを確認してください。たとえば、ここで非常によくある間違いは次のとおりです。

testString.Replace("a", ""); // remove the "a"s

これは次のようになります。

return testString.Replace("a", ""); // remove the "a"s

また

testString = testString.Replace("a", ""); // remove the "a"s
...
return testString;

ポイントは:string不変です: Replaceetc 古い文字列を変更しません: どこかに保存する必要がある新しい文字列を作成します.

于 2013-03-05T09:07:01.523 に答える