So che le stringhe sono immutabili, quindi nel momento in cui modifichi il valore di un riferimento di stringa, .NET crea una nuova stringa sull'heap.VB.NET: Se si passa una stringa ByVal in una funzione ma non si modifica la stringa, è necessario avere una o due stringhe in memoria?
Ma cosa succede se non si modifica il valore di un riferimento di stringa; piuttosto, è sufficiente passarlo in una funzione ByVal
- questa operazione copia anche il valore della stringa sull'heap? La mia inclinazione è "no", ma mi piacerebbe confermare.
Ad esempio:
Public Function IsStringHello(ByVal test As String) As Boolean
Return (String.Compare(test, "Hello") = 0)
End Function
programma chiamante:
Dim myWord as String = "Blah"
Dim matchesHello as Boolean = IsStringHello(myWord)
So passando myWord
per valore fa una copia del di riferimento a "Blah", ma dato che non hanno cercato di cambia la stringa stessa, creerebbe un'altra copia della stringa sull'heap?
Perché le persone confrontano le stringhe in questo modo strano ... http://stackoverflow.com/questions/859005/string-comparison-performance/859078 – Dario
Utilizzo di String.Compare consente di specificare la distinzione tra maiuscole e minuscole. Questo potrebbe essere più chiaro delle stringhe maiuscole prima di confrontarle. –