zoukankan      html  css  js  c++  java
  • 关于C#交互式窗口(C# Shell REPL Interpreter Interactive)

    一、写在前面

        C#交互式窗口,来源与,我在写程序时,突然想到我一个语句有问题

    string.IsNullOrEmpty(Imei.Trim())/*因为我要判断一个字符串对象是否为null或空字符,却对变量进行了Trim()函数操作,这个函数是对null是会报异常的。*/

        我想让句代码在编译器上运行下,看看是不是这么回事。

        因为之前一个项目的原因我用过Python(并且最近一段时间我睡前都是看Python的书),非常喜欢Python的交互式窗口,敲完代码回车一下,就可以执行立,立即看到效果。

    image 

        由此我想到C#或者.Net是否有这样的交互式窗口呢?就此有了我此篇文章。

    二、相关链接

    C# Eval: An Embeddable Compiler,作者在08年写的一篇文章,尝试根据Repl自己写一个C#Shell。

    Ironpython,.Net版本的Python,里面保留Python的交互式窗口。

    Snippet Compiler,初衷就为开发者临时测试C#代码的一个机器简化的调试环境,非常不错。

    CsharpRepl,Mono下面的C#Shell,它提供了完整原生态的C#Shell功能,就是基于Mono平台的。

    在.NET平台下使用C#交互式控制台(上):简介,国人对于C#交互式讨论,博主非常赞赏Mono平台。

    浅谈 C# 交互窗口再谈 C# 交互窗口,国人自己一直Repl的经历,结果是失败了。

    .NET代码快速转换成powershell代码,国人写的用Pshell代替类似的功能。

    三、正文

        进过搜索与参考一些资料我得到的结论

        直接针对.Net的C#Shell确实没有,但或多说少有一些替代的解决方法。

    1).使用轻量级的.Net调试工具,比较出名的是Snippet Compiler、SharpDevoloper。

        其中这个Snippet Compiler这是一个非常轻量级的开源IDE,其存在的初衷就是为了方便开发者进行快速代码测试,简化一切非测试代码的工作(如保存文件、构造完整的命令行类、输入输出、异常管理)。其默认新建的代码窗口,就封装成一个用于代码调试的代码模版,包括打包Main()函数、简化的命令行输入输出函数。你所要做的操作就是在其生成的RunSnippet类中写上你需要测试的代码,然后点击Start运行。

    image

    2).使用F#、Ironpython、Ironruby这类运行.Net上的其他语言。

        如果你熟悉这些.Net平台上的语音,你就多一个选择,这类函数语言或者脚本语言都有自己的交互式窗口(Python与Ruby本身就是交互式语言,在移植到.Net环境中也保留了这一特性,F#在VS2010中就自带交互式工具)。这些语言的特点都是直接运行于微软的.Net类库,除了语言在自身语法与C#的区别外,但在调试.Net类库时它们的兼容性肯定最好。

    image image

    3.)使用Mono项目中的CsharpRepl

        这看似是一个令人激动的项目。直接C#的交互式窗口。可惜它是运行在Mono下面(有人说不会移植到到.Net下吗?是的有人已经这么做了,可惜还没成功.再谈 C# 交互窗口\C# Eval: An Embeddable Compiler这两篇文章都是尝试移植Repl而没有成功)。Mono毕竟不是.Net,所以你调试简单的C#语法是可以的,但是一旦涉及到Mono与.Net差别的地方,那就恼人了。而且这个交互窗口并没有提供友好的提示功能,完全靠自己代码书写水平。

    image

       虽然这三个办法都有各自的缺点,但至少说明互联网上有这样功能的需求,并且有人对此进行了尝试,我们只能希望于尽早有原生态的基于.Net的C#Shell诞生。目前我们只能用上面三个方法之一来解决。我个人比较推荐Snippet Compiler

  • 相关阅读:
    征集“微软武汉DOTNET俱乐部武汉大学樱花赏”活动内容
    2007上半年微软武汉.NET俱乐部活动预告。
    [微软新技术培训]微软新技术预览之Microsoft Office SharePoint Server 2007
    武汉.NET俱乐部武大赏樱花精彩图片
    [微软新技术培训]微软新技术预览之Visual Studio Team System
    [摘]互联网传说
    python:注释最多的冒泡排序
    《C#线程参考手册》读书笔记(一):定义线程
    【转】C# DateTime 日期计算
    详谈WPF开发中的数据虚拟化
  • 原文地址:https://www.cnblogs.com/edzjx/p/2225515.html
Copyright © 2011-2022 走看看