【发布时间】:2019-10-21 09:23:01
【问题描述】:
我今天遇到了一个奇怪的问题。我有一个这样的逐字字符串:
var s = @" 0 1
0 0"
即之后有一个新行。我的 Environment.NewLine 设置为 \r\n
这是单元测试的一部分,测试在过去几个月中运行良好。现在,当我运行测试时,上面的字符串声明会导致:
" 0 1\n 0 0"
而不是
" 0 1\r\n 0 0"
意味着测试失败。
我已经抛弃了每个角色来证明这是真的。我也尝试过不使用逐字字符串,如下所示:
var s = " 0 1\r\n 0 0"
然后测试通过。
有人知道这里会发生什么吗?
【问题讨论】:
-
也许您的源文件实际上只有
\n- 您是否尝试过删除中断并再次插入它,或者查看文件中可以显示实际字节的内容?跨度> -
就是这样!我尝试将代码复制并粘贴到记事本++中,但显然当我这样做时,它更正了行尾。如果我直接打开文件,由于某种原因,行尾已更改为 LF#
-
依赖于特定的行尾是危险的。源代码控制软件(例如 Git)可能会根据用户的设置在 push 或 pull 时转换行尾。
-
@cremor 是的,我刚刚在那里学到了重要的一课。
-
我认为一定是 git 做到了。 :)
标签: c# line-endings verbatim-string