2016-06-21 13 views
2

Ich arbeite an einem älteren VB.Net-Projekt, und ich finde hunderte von Stellen, an denen entweder String-Literale oder String-Variablen CStr'd werden. Es wird auch mit Ints gemacht. Gibt es einen Wert, dem ich nicht bewusst bin? Ist das ein tatsächlicher Vorgang, der Rechenleistung kostet?Was ist das? CStr ("DELETE")

+1

Bizarr. Wird das Ergebnis in irgendeiner Weise verwendet? –

+0

Sehen Sie das nicht zu viel, aber wenn Sie die Microsoft-Informationen betrachten, scheint es die Leistung zu verbessern. https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx - https://msdn.microsoft.com/en-us/library/ch47ss2a.aspx – coder32

+0

ToString() ist eine tatsächliche Methodenaufruf, wenn an einer Schnur durchgeführt, könnte es tatsächlich schlimmer sein. BEARBEITEN: bestätigt. –

Antwort

1

CStr auf einer Zeichenfolge ist vollständig redundant und nicht schädlich.

baute ich eine Datei:

Sub Main() 
    Dim result = CStr("string") 

    Console.WriteLine(result) 
End Sub 

und der Compiler war klug genug, CStr („string“) mit „string“ zu ersetzen, wenn Sie einen Blick auf die zerlegten Baugruppe mit ILSpy haben.

+1

Es wird genau dasselbe tun, für den Compiler sind sie beide nur Zeichenfolgen. –

+0

Ich wusste nicht einmal, dass wir über Schlussfolgerung reden, es hat nichts mit der Frage zu tun. –

+0

@Zaggler - '" 12 "' * ist * eine Zeichenkette also warum möchten Sie, dass es zu einem späteren Zeitpunkt eine Ganzzahl ist? Tippe Inferenz mit 'Option Infer', was ich denke, was du meinst, wenn du sagst, dass der Compiler das Casting nicht zu irgendwelchen schädlichen Nebenwirkungen führt, sondern einfach die Anforderung entfernt,' As SomeType' zu ​​setzen. 'CStr (" abc ")' ist jedoch völlig sinnlos –