V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX  ›  C#

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

  •  
  •   zxCoder · 2021-04-16 19:31:40 +08:00 · 3032 次点击
    这是一个创建于 1342 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    // 对
    using(var sw = new StreamWriter(compileScript)) {
    	sw.Write(_submission.Cmd);
    }
    // 错
    using var sw = new StreamWriter(compileScript);
    sw.Write(_submission.Cmd);
    
    第 1 条附言  ·  2021-04-17 08:21:29 +08:00

    感谢#7 #8楼的回答。。。破案了,第二种写法后面需要马上Flush(如果下面需要需要立即读取该内容的化)

    12 条回复    2021-04-18 07:40:06 +08:00
    liuhan907
        1
    liuhan907  
       2021-04-16 19:39:11 +08:00 via Android
    sw 的作用域不一样,其它没了。
    zxCoder
        2
    zxCoder  
    OP
       2021-04-16 19:41:38 +08:00
    @liuhan907 那就很奇怪了。。。总之这两个写法一换程序就 ok 了。。。 而且 sw 后面也并没有再用到,其他语句我都尽量注释掉了
    Zhuzhuchenyan
        4
    Zhuzhuchenyan  
       2021-04-16 23:04:44 +08:00
    感觉可以再深入一下,根据我的理解这两个语句应该是等价的。

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

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

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

    老哥们这个有相关文档说明吗。。。。还是没查到这两者的区别介绍,我又迷惑了
    mingl0280
        11
    mingl0280  
       2021-04-18 03:53:47 +08:00 via Android
    @zxCoder msdn 不是有一段关于 IDisposable 和 StreamWriter 不是线程安全和同步的的说明么?你不看文档的么?
    https://docs.microsoft.com/en-us/dotnet/api/system.io.streamwriter?view=net-5.0
    liuhan907
        12
    liuhan907  
       2021-04-18 07:40:06 +08:00 via Android
    @zxCoder
    结果还真是作用域导致的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:58 · PVG 17:58 · LAX 01:58 · JFK 04:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.