Using the literal '@' with a string variable

后端 未结 6 743
Happy的楠姐
Happy的楠姐 2020-12-17 01:42

I have a helper class pulling a string from an XML file. That string is a file path (so it has backslashes in it). I need to use that string as it is... How can I use it lik

相关标签:
6条回答
  • 2020-12-17 02:02

    In C# the @ symbol combined with doubles quotes allows you to write escaped strings. E.g.

    print(@"c:\mydir\dont\have\to\escape\backslashes\etc");
    

    If you dont use it then you need to use the escape character in your strings.

    http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx

    You dont need to specify it anywhere else in code. In fact doing so should cause a compiler error.

    0 讨论(0)
  • 2020-12-17 02:04

    The string returned from your helper class is not a literal string so you don't need to use the '@' character to remove the behaviour of the backslashes.

    0 讨论(0)
  • 2020-12-17 02:05

    You've got it backwards. The @-operator is for turning literals into strings, while keeping all funky characters. Your path is already a string - you don't need to do anything at all to it. Just lose the @.

    string filePath = helper.getFilePath();
    
    0 讨论(0)
  • 2020-12-17 02:09

    I don't think you have to worry about it if you already have the value. The @ operator is for when you're specifying the string (like in your first code snippet).

    What are you attempting to do with the path string that isn't working?

    0 讨论(0)
  • 2020-12-17 02:09

    I'm not sure if I understand. In your example: if helper.getFilePath() returns "c:\somepath\file.txt", there will be no problem, since the @ is only needed if you are explicitely specifying a string with "".

    When Functions talk to each other, you will always get the literal path. If the XML contains c:\somepath\file.txt and your function returns c:\somepath\file.txt, then string filePath will also contain c:\somepath\file.txt as a valid path.

    0 讨论(0)
  • 2020-12-17 02:16

    The @"" just makes it easier to write string literals.

    string (C# Reference, MSDN)

    Verbatim string literals start with @ and are also enclosed in double quotation marks. For example:

    @"good morning" // a string literal

    The advantage of verbatim strings is that escape sequences are not processed, which makes it easy to write, for example, a fully qualified file name:

    @"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"

    One place where I've used it is in a regex pattern:

    string pattern = @"\b[DdFf][0-9]+\b";

    If you have a string in a variable, you do not need to make a "literal" out of it, since if it is well formed, it already has the correct contents.

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