Question

Is there any difference in how the C# compiler or .NET run-time handles verbatim string literals versus using escape sequences (i.e. performance) or is it just a matter of design time style? E.G.:

var pathA = "c:\\somewhere";
var pathB = @"c:\somewhere";

I would imagine they are compiled the same and it doesn't matter, but was just curious.

Était-ce utile?

La solution

Any difference here is limited strictly to the compiler; the IL and runtime have no concept of verbatim vs escaped - it just has the string.

As for which to choose: whichever is more convenient ;p I almost always use verbatim string literals if there are unusual characters, as that allows for multi-line strings very easily and visually.

As an interesting case:

bool areSame = ReferenceEquals("c:\\somewhere", @"c:\somewhere"); // true

which tells are they are exactly the same string instance (thanks to "interning"). They aren't just equivalent; they are the same string instance to the runtime. It is therefore impossible that they can be (to the runtime) different in any way.

Autres conseils

They are exactly the same. Try to decompile the two versions with a decompiler.

It's only a matter of convenience for developers when writing it in the code.

The @ sign in front of a string tells the compiler to ignore any embeded escape sequences.

string "\"" would yield a single double quote. string "\" would yield a single back slash string @"\" would yield two backslashes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top