40

在 Ander 的演讲The Future of C#的最后 10 分钟中,他演示了一个非常酷的 C# Read-Eval-Print 循环,这将极大地帮助学习该语言。

几个 .NET4 相关的下载已经可用:Visual Studio 2010 和 .NET Framework 4.0 CTPVisual Studio 2010 和 .NET Framework 4 Training Kit。你知道这个 REPL 发生了什么吗?它是否隐藏在示例中?

我知道单声道repl。请,没有替代解决方案。

4

10 回答 10

25

REPL 演示是​​“接下来可能发生的事情”的一部分,即4.0之后;在 .NET 5.0 或类似版本中。

不是4.0 的功能,而且从来没有。

于 2009-07-27T10:29:36.513 回答
9

值得一提的是,Mono 项目已经一个 C# REPL,我倾向于将它用于您不时进行的那些小检查。 看一看。 此外,如果我正在测试一个我不喜欢 Mono 无法很好处理的想法,并且不值得开始一个新的测试项目,那么Snippet Compiler总是会派上用场。

于 2009-11-26T10:04:25.563 回答
4

即时窗口 (Debug>Windows>Immediate Ctrl+D, I ) 是相当不错的内置替代品。它确实需要您启动 IDE 并在某些东西上放置断点。

它确实为您提供了您想在哪里进行实验的背景。

于 2011-01-21T21:59:35.590 回答
3

Marc 的回答是完全正确的,Eric Lippert 在两篇博客文章中讨论了 repl 或像 c# 这样的脚本的可能性:

我要补充一点,2010 CTP 确实包含一个 f# repl(对 c# 没有多大用处,但如果您对BCL 或 CLR的某些方面感兴趣,那么它可能足以满足您的需求)

我发现 LINQPad 在许多情况下弥补了 REPL 的不足。将它集成到 Visual Studio 中会很好,这样您就可以更轻松地与现有代码库进行交互。

于 2009-07-27T12:25:56.077 回答
2

看看这个C# REPL 脚本环境,它是快速运行 C# 脚本(并学习如何编码)的好方法

于 2012-08-02T13:10:13.710 回答
2

我刚刚发布了一个 VisualStudio 扩展,它在 VisualStudio 中提供了一个 REPL 环境(即一个 C# REPL 环境,带有适用于 .NET 和 VisualStudio 的 Fluent API)

除了能够编写和执行快速的 C# 代码片段(在 REPL 环境中)之外,您还可以对 VisualStudio IDE 进行实时编程!

您可以使用 VisualStudio 的扩展管理器(搜索 C# REPL)或通过 VisualStudio 库页面上的下载链接安装它:VisualStudio C# REPL

VisualStudio C# REPL页面还包含更多详细信息和代码示例。

此扩展上还有一个Reddit 线程(其中包含更多代码示例)。

告诉我你对它的想法

于 2012-10-02T23:14:53.123 回答
2

命令行 REPL

要在 Visual Studio 之外使用 C# REPL,请打开VS2015 的开发人员命令提示符并键入命令csi以开始交互式会话。是可以传递给 csi 的参数列表。

注: csi代表“CSharp Interactive”

您还可以通过导航到 直接从 Visual Studio 打开交互式窗口View > Other Windows > C# Interactive

查看C# Interactive Window上的 Roslyn Wiki 。

于 2017-05-11T20:37:24.417 回答
1

我找到了http://kamimucode.com/Home.aspx/C-sharp-REPL/1。这似乎相当不错,我相信还公开了一个 API 来动态评估表达式

于 2011-04-05T08:35:48.277 回答
0

要更新这个老问题,c# REPL 现在作为 Visual Studio IDE 的一部分提供(从 VS 2015 更新 1 开始)。

介绍 Visual Studio 'C# REPL'

于 2016-08-11T19:11:42.040 回答
0

有时我想尝试一些 .NET API,而不是想知道 C# 语言的语法。(API 比语言本身更微妙。)如果您只是在寻找 .NET 的 REPL,那么好的旧PowerShell始终与您同在。

C#:

using System;
using System.Text;

Convert.ToBase64String(Encoding.UTF8.GetBytes("Overflow"));

电源外壳:

[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("Overflow"))
于 2018-11-17T02:51:34.180 回答