我认为如果我能在运行时编写vb.net或c#代码会很有趣,而解释器会像python一样自动解析它,所以我做了一个小程序,它会做类似的事情.基本上它看起来像这样:
InputArgs = Console.ReadLine() ParseInput(InputArgs.Split(" ")) Private Sub ParseInput(Args as List(Of String), Optional TempArgs as List(Of String)) Dim arg as string = Args(0) If arg = ".." then ... elseif arg = ".." then ... end if End Sub
我知道这不是一个好的系统,但它显示了基础知识.所以我的问题是:是否有可能使vb.net或c#像python一样 - 在运行时解释?
这已经存在于相当多的形状和形式:
Mono有Mono.CSharp
程序集,你可以参考做任何CSharp.exe(AC#'解释器'或交互式shell,如果你愿意)可以做:
void ReadEvalPrintLoopWith (ReadLiner readline) { string expr = null; while (!InteractiveBase.QuitRequested){ string input = readline (expr == null); if (input == null) return; if (input == "") continue; expr = expr == null ? input : expr + "\n" + input; expr = Evaluate (expr); } }
毋庸置疑,这也适用于MS.Net(当然,这是关于便携式.Net的观点).
github上有完整的消息来源- 就像其他的Mono一样.
已经实施了几种DLR语言,包括但不限于
IronRuby的
IronPython的
Jint(http://jint.codeplex.com/) - 在.Net 2.0上运行javascript
它允许您在.NET框架中动态评估python/ruby代码.
Microsoft已将Roslyn发布为CTP(预览版).它基本上可以做与Mono REPL(第一项)相同的东西,以及(更多).但它仍然是预览.