Verbatim string literals v escape sequences

后端 未结 3 2017
半阙折子戏
半阙折子戏 2020-12-01 23:59

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 d

相关标签:
3条回答
  • 2020-12-02 00:28

    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

    0 讨论(0)
  • 2020-12-02 00:40

    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.

    0 讨论(0)
  • 2020-12-02 00:50

    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.

    0 讨论(0)
提交回复
热议问题