读取文件的差异

本文关键字:文件 读取 | 更新日期: 2023-09-27 18:09:49

string value1 = File.ReadAllText("C:''file.txt");
string value2 = File.ReadAllText(@"C:'file.txt");

在上面的语句中,使用@"C:''file.txt">C:''file的区别是什么时候.txt

读取文件的差异

编译器

将按原样读取@"C:''file.txt"。删除逐字 (@( 将使其将">''f">视为单个转义字符(表单源(。换句话说:

@"C:'file.txt" == "C:''file.txt"
@"C:'file.txt" != "C:'file.txt" // treated as C: + FormFeed + ile.txt

逐字字符串文本以 @ 开头,也括在双精度中 引号。例如:

@"good morning"  // a string literal

逐字字符串的优点是转义序列不是 处理,这使得编写变得容易,例如,一个完整的 限定文件名:

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

字符串:

常规字符串文本由零个或多个字符组成 在双引号中,如"hello",并且可能包括两个简单转义 序列(例如 ''t 表示制表符(和十六进制和 Unicode 转义序列。

逐字字符串文本由一个 @ 字符后跟一个 双引号字符、零个或多个字符和一个结束字符 双引号字符。一个简单的例子是@"hello"。逐字记录 字符串文字,解释分隔符之间的字符 逐字逐句,唯一的例外是引号-转义-序列。在 特殊的简单转义序列以及十六进制和 Unicode 转义 序列不会在逐字字符串文本中处理。逐字记录 字符串文本可以跨越多行。

在字符串中使用'时,通常必须使用 '',因为'是转义字符。 实际上,你显示的第一个字符串(File.ReadAllText("C:'file.txt");(应该抛出编译错误。

@将允许您在每次需要'时都不使用''来构建字符串。

string value1 = "C:'file.txt";
string value2 = @"C:'file.txt";

value1 的字符串将包含一个 ''f 所在的表单馈送字符,而第二个字符串将保留反斜杠和 f。 (如果您尝试使用 Console.Write 在控制台应用程序中输出它们,这一点会变得非常清楚...(

value1 版本的正确方法是"C:''file.txt"

(正如德米特里所说,value2 版本使用所谓的逐字字符串(