私は文字列が不変であることを知っているので、文字列参照の値を変更すると、.NETは新しい文字列をヒープ上に作成します。VB.NET:関数にString ByValを渡しても文字列を変更しないと、メモリに1つまたは2つの文字列がありますか?
を変更しないと、の文字列参照の値が変更されます。代わりに、単に関数に渡すだけです。ByVal
- この操作では、文字列値もヒープにコピーされますか?私の傾向は「いいえ」ですが、確認したいと思います。例えば
:
Public Function IsStringHello(ByVal test As String) As Boolean
Return (String.Compare(test, "Hello") = 0)
End Function
はプログラムの呼び出し:私は知っている
Dim myWord as String = "Blah"
Dim matchesHello as Boolean = IsStringHello(myWord)
を値でmyWord
を渡すと、「何とか」に参照のコピーを作成しますが、私は試していないので、文字列自体を変更すると、ヒープに文字列の別のコピーが作成されますか?
なぜ人々はこの奇妙な方法で文字列を比較するのですか?http://stackoverflow.com/questions/859005/string-comparison-performance/859078 – Dario
String.Compareを使用すると、大文字と小文字の区別を指定できます。これを比較する前に、文字列を大文字にするよりはっきりしているかもしれません。 –