我们知道,F# 的编译器是 fsc.exe,F# 交互窗口是 fsi.exe。其他动态语言也可以交互执行,例如 Ruby 语言的解释器是 ruby,交互窗口是 irb。而 Python 语言中,python 既可以解释执行,也可以作为交互窗口。请参见我于2010年6月15日写的随笔“Ubuntu 中的编程语言(上)”。

C# 语言虽然不是动态语言,但是在 mono 中也有一个 C# 交互窗口: csharp,请参阅 CsharpRepl 。

ben@ben1520:~> csharp
Mono C# Shell, type "help;" for helpEnter statements below.
csharp> Environment.Version;
4.0.30319.1
csharp> Environment.OSVersion;
Unix 2.6.34.7
csharp> var pi = Math.PI;
csharp> pi / 2;
1.5707963267949
csharp> ShowVars();
double pi = 3.14159265358979
csharp> quit;
ben@ben1520:~>

可以看出,直接输入一个表达式,C# 交互窗口就会给出该表达式的值。使用 help 命令可以获得帮助:

ben@ben1520:~> csharp
Mono C# Shell, type "help;" for helpEnter statements below.
csharp> help;
"Static methods:Describe (object)       - Describes the object's typeLoadPackage (package);  - Loads the given Package (like -pkg:FILE)LoadAssembly (assembly) - Loads the given assembly (like -r:ASSEMBLY)ShowVars ();            - Shows defined local variables.ShowUsing ();           - Show active using declarations.Prompt                  - The prompt used by the C# shellContinuationPrompt      - The prompt for partial inputTime(() -> { })         - Times the specified codequit;                   - You'll never believe it - this quits the repl!help;                   - This help textTabAtStartCompletes - Whether tab will complete even on emtpy lines
"
csharp> ShowUsing();
using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections;
csharp> quit;
ben@ben1520:~>

下面是使用 Linq 语句的例子:

ben@ben1520:~> csharp
Mono C# Shell, type "help;" for helpEnter statements below.
csharp> using System.IO;
csharp> from f in Directory.GetFiles("/etc")> let fi = new FileInfo(f)> where fi.LastWriteTime > DateTime.Now.AddDays(-7)
      > select f;
{ "/etc/adjtime",  "/etc/fstab", "/etc/group","/etc/mtab", "/etc/passwd", "/etc/shadow" }
csharp> quit;
ben@ben1520:~>

此外,C# 交互窗口还支持编辑命令行,<Home>键移动光标到行首,<End>键移动光标到行末,<上箭头>键将当前行替换为上一行,<下箭头>键将当前行替换为下一行,<退格>键删除光标前一个字符,<Del>键删除光标处字符,<Tab>键补全命令行。更详细的信息可使用 man csharp 命令查看。

ben@ben1520:~/work> cat test.cs
using System.Numerics;
var a = 13;
BigInteger.Pow(a, 53);
ben@ben1520:~/work> csharp test.cs -r:System.Numerics.dll
109395050288514219040366056833567359441133418834382438145053
ben@ben1520:~/work> csharp --version
Mono C# compiler version 4.0.0.0
ben@ben1520:~/work>

可见也可以将 C# 语句放到 .cs 文件中由 csharp 来解释执行。

此外,C# 交互窗口还有 GUI 版本:gsharp,可以使用 GTK#,并且内置一个 Plot 用来画函数的图像:

浅谈 C# 交互窗口相关推荐

  1. 浅谈TCP的窗口字段

    该掸掸这里的灰尘了,写一篇关于TCP的文章吧.今天的主题是TCP的滑动窗口.在开始这个话题之前,我想先提几个关于TCP协议的常见误区. 误区1:TCP协议三次握手过程中后两个包都是[ACK]包. 解释 ...

  2. 浅谈:交互设计应用在哪些行业?就业前景如何?

    随着我们的产品越来越智能化和人性化,交互设计师的概念应运而生.交互设计的的出现,在一定程度上满足了当下人们对产品的需求.因此交互设计被广泛的应用在各行各业,像目前发展前景好比较热门的搜索引擎.微信.淘 ...

  3. 页面显示 amp html6,浅谈HTML5 amp;amp; CSS3的新交互特性

    本文标题的这副图片,是用Phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的 ...

  4. linux 易语言窗口程序_浅谈Linux入门的基本知识

    浅谈Linux入门的基本知识 图形模式与文字模式的切换方式Linux预设提供了六个命令窗口终端机让我们来登录. 默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1.tty2 - ...

  5. html5交互效果,浅谈HTML5 CSS3的新交互特性

    本文标题的这副图片,是用Phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的 ...

  6. html5中的css特性,浅谈HTML5 CSS3的新交互特性

    本文标题的这副图片,是用phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的 ...

  7. android分屏模式_浅谈 Android 7.0 多窗口分屏模式的实现

    从 Android 7.0 开始,Google 推出了一个名为"多窗口模式"的新功能,也就是我们常说的"分屏模式".那么,这个功能有什么用呢?作为开发者,我们又 ...

  8. Esp8266 进阶之路21 【高级篇】浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  9. 计算机中用户的分类有哪些,用户分类浅谈交互设计 -电脑资料

    说到网络产品,离不开的话题就是用户,就像传统行业的消费者, 不分类不好定位, 好的用户分类让我知道了我在追求哪些人,满足哪些人,影响哪些人.但分不好类又会错位,更糟,那怎样才能对某一款产品的用户群进行 ...

  10. catia三维轴承_浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文

    浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文 一.概述 单排四点接触球转盘轴承是一种能够同时承受较大轴向负荷.径向负荷和倾覆力矩等综合载荷,集支承.旋转.传动.固定等多种功能于一身的特殊 ...

最新文章

  1. Android报错:java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;如何解决
  2. 【经验】网络加速:pip
  3. SAP Basis 日常管理
  4. linux ubuntu kill指令和killall指令的区别(killall会终止所有与该名字匹配的进程)
  5. 1731: 数棍子(二分,最后一个大于等于)
  6. Notes on language modeling-COMS W4705: Natural Language Processing-学习笔记
  7. SpringBoot-源码阅读
  8. HttpServlet请求重定向
  9. 如何让一个函数返回多个值(C#)
  10. MSSQL自动备份数据库(转载)
  11. DSP程序nbsp;调试总结
  12. 【知识管理】知识管理系统功能构件简介
  13. Button按钮及其点击事件方式
  14. 我的世界服务器无限刷东西指令,我的世界无限刷物品命令方块指令 | 手游网游页游攻略大全...
  15. IDEA springboot 项目启动报错 Shorten the command line via JAR manifest or via a classpath file and rerun
  16. uniapp 本地相册选择图片
  17. 微信支付 postman_微信收款商业版有什么功能?微信智慧经营2.0原来可以这么玩!...
  18. SQL基础培训13-索引和优化
  19. java程序员学技术都会访问那些网站?
  20. 201606120030-软一-周翊涵

热门文章

  1. Delphi 与 DirectX 之 DelphiX(63): TDIB.DoPosterize();
  2. Dot net GC
  3. kafka consumer 的配置(五)
  4. CENTOS6.8 修改主机名
  5. IN改写关联注意事项!
  6. java.io.tmpdir
  7. 将网页和文档的背景改为绿色来保护眼睛
  8. 左手用R右手Python系列16——XPath与网页解析库
  9. activiti官网实例项目activiti-explorer之获取流程节点
  10. First Kernel-pwn