经过整整一天的 debug。。。终于定位到了问题

2021-04-16 19:31:40 +08:00
 zxCoder

最后居然是这个语法的问题,虽然不知道为什么会影响到我的结果。。。。但是问题就是出现在这一段代码上。。。。要去补补基础知识了。。难道这两个有啥区别

// 对
using(var sw = new StreamWriter(compileScript)) {
	sw.Write(_submission.Cmd);
}
// 错
using var sw = new StreamWriter(compileScript);
sw.Write(_submission.Cmd);
3034 次点击
所在节点    C#
12 条回复
liuhan907
2021-04-16 19:39:11 +08:00
sw 的作用域不一样,其它没了。
zxCoder
2021-04-16 19:41:38 +08:00
@liuhan907 那就很奇怪了。。。总之这两个写法一换程序就 ok 了。。。 而且 sw 后面也并没有再用到,其他语句我都尽量注释掉了
akira
2021-04-16 20:53:47 +08:00
Zhuzhuchenyan
2021-04-16 23:04:44 +08:00
感觉可以再深入一下,根据我的理解这两个语句应该是等价的。

能否提供一个最小的出现 bug 的情形呢?
Youen
2021-04-16 23:15:52 +08:00
可以反编译一下看看 IL 有什么不同
Fx8m
2021-04-16 23:40:33 +08:00
第一个运行完后会清理资源。
两个应该是一样的效果啊,为什么会出错。
hyb1996
2021-04-17 01:04:59 +08:00
第二个没有立即 flush?
mingl0280
2021-04-17 01:20:47 +08:00
有区别,第二个如果没等到默认的 flush 执行就不会输出,第一个执行完必定带一下 flush+close...
zxCoder
2021-04-17 08:20:19 +08:00
@hyb1996
@mingl0280

哎哟我去。。。。真是这个原因。。。恰巧我这个写入的内容在下面需要马上读取。。。。。

果然靠 IDE 学语法还是有点不太靠谱。。。
zxCoder
2021-04-17 14:11:16 +08:00
@hyb1996
@mingl0280

老哥们这个有相关文档说明吗。。。。还是没查到这两者的区别介绍,我又迷惑了
mingl0280
2021-04-18 03:53:47 +08:00
@zxCoder msdn 不是有一段关于 IDisposable 和 StreamWriter 不是线程安全和同步的的说明么?你不看文档的么?
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamwriter?view=net-5.0
liuhan907
2021-04-18 07:40:06 +08:00
@zxCoder
结果还真是作用域导致的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX