これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド csharp です。
プログラム:
NAME
csharp、gsharp - インタラクティブな C# シェル
SYNOPSIS
Cシャープ [--添付 PID] [-e 表現] [ファイル1 [ファイル2]] [オプション]
鋭い [ファイル1 [ファイル2]]
DESCRIPTION
この Cシャープ ユーザーが C# を入力して評価できる対話型 C# シェルです。
コマンドラインからのステートメントと式。 定期的な mcs コマンドラインオプション
このバージョンのコンパイラで使用できます。
この 鋭い コマンドは、Gtk# を使用し、
ウィジェットを添付するエリアもあります。 このバージョンは他の Gtk# に接続できます
Gtk# アプリケーションのメイン ループに自身を挿入するため、アプリケーションを安全な方法で保護します。
それ自体をシステムに挿入するマルチスレッドの性質から生じる問題を回避します。
対象のプロセス。
コマンドラインで指定されたファイルはスクリプトとしてロードされ、実行されます。
Mono 2.10 以降、 Cシャープ コマンドは、によって実行されるインタープリターとして使用できます。
Unix 実行属性のフラグが付けられた実行可能ファイル。 これを行うには、次の最初の行を作成します。
C# ソースコードは次のようになります。
「#!/usr/bin/csharp」
Console.WriteLine ("Hello, World");
OPTIONS
コマンドは、使用可能なすべてのコマンドを受け入れます。 mcs コマンドを使用すると、次のことができます
コマンド ラインからアセンブリを参照し、パスや言語レベルなどを指定します。 で
さらに、次のコマンド ライン オプションがサポートされています。
-添付
これは高度なオプションであり、深く理解している場合にのみ使用してください。
マルチスレッドの。 このオプションは、 Cシャープ コマンドと許可
コンパイラを他のプロセスに挿入します。 これは、C# を注入することによって行われます。
アプリケーションと同時に実行される別のスレッドでシェルを実行します。 これ
ターゲット アプリケーションのクラッシュを避けるために特別な措置を講じる必要があることを意味します
使用中。 たとえば、事前に適切なロックを取得する必要がある場合があります。
ターゲットプロセスの状態に影響を与える可能性のあるコマンドを発行する、または送信する
メソッド ディスパッチャーを介してコマンドを実行します。
-e 表現
これにより、指定された C# EXPRESSION が評価されて終了します。
OPERATION
csharp コマンドを起動すると、対話型プロンプトが表示されます。
$ cシャープ
Mono C# シェル、「help;」と入力します。 助けのために
以下にステートメントを入力します。
シャープ>
C# では、System、System.Linq、
System.Collections と System.Collections.Generic。 コンパイルモードとは異なり、
コードを入力するときに新しい using ステートメントを追加できます。例:
csharp> new XmlDocument ();
(1,6): エラー CS0246: 型または名前空間名 `XmlDocument' が見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足していませんか?
csharp> System.Xml を使用します。
csharp> new XmlDocument ();
System.Xml.XmlDocument
コマンドが入力されるたびに、そのコマンドのスコープは派生クラスの XNUMX つになります。
クラス Mono.CSharp.InteractiveBase から。 このクラスは、いくつかの静的オブジェクトを定義します。
プロパティとメソッド。 使用可能なコマンドのリストを表示するには、「ヘルプ」にアクセスします。
プロパティ:
csharp> ヘルプ;
「静的メソッド:
ロードパッケージ (パッケージ); - 指定されたパッケージをロードします (-pkg:FILE など)
[...]
ShowVars (); - 定義されたローカル変数を表示します。
ShowUsing (); - 変化を使用してアクティブを表示します。
助けて;
"
シャープ>
式が入力されると、C# シェルは次の式を実行した結果を表示します。
式:
csharp> Math.Sin (Math.PI/4);
0.707106781186547
csharp> 1+1;
2
csharp> "Hello, world".IndexOf (',');
5
C# シェルは、返されたオブジェクトに対して ToString() メソッドを使用してオブジェクトを表示します。
ToString() メソッドをオーバーライドしないオブジェクトは、
System.Object から型名を表示するだけのデフォルトの動作を取得します。
csharp> var a = new XmlDocument ();
cシャープ> a;
System.Xml.Document
csharp> csharp> a.名前;
"#書類"
シャープ>
いくつかのデータ型は、配列などの C# インタラクティブ シェルによって特別に処理されます。
System.Collections.Hashtable、System.Collections.IEnumerable を実装するオブジェクト、および
IDictionary は、単に ToString () を使用するのではなく、特別にレンダリングされます。
csharp> var Pages = 新しいハッシュテーブル () {
> { "モノ"、"http://www.mono-project.com/" }、
> { "Linux"、"http://kernel.org" } };
csharp> ページ;
{{ "単核症"、 "http://www.mono-project.com/" }, { "Linux", "http://kernel.org" }}
System.Linq があるため、C# 対話型シェルで LINQ を直接使用することができます。
名前空間は起動時にインポートされています。 次のサンプルでは、すべてのリストを取得します。
~から XNUMX 週間アクセスされなかったファイル / tmpに:
csharp> System.IO を使用します。
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> var old_files = from f in Directory.GetFiles ("/ tmpに")
> fi = 新しい FileInfo (f) とします
> ここで、 fi.LastAccessTime < LastWeek select f;
シャープ>
もちろん、単一のステートメントで結果を出力することもできます。
csharp> System.IO を使用します。
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> Directory.GetFiles の f から ("/ tmpに")
> fi = 新しい FileInfo (f) とします
> ここで、 fi.LastAccessTime < last_week select f;
[...]
シャープ>
LINQ とその機能基盤は、IEnumerable 戻り値のオンデマンド コードを生成します。
たとえば、 using `from' からの戻り値は、評価される IEnumerable です。
要求。 コマンド ラインでの IEnumerables の自動レンダリングにより、
実行を遅延させる代わりに、その時点で実行する IEnumerable パイプライン
後の時点まで。
この時点で IEnumerable がレンダリングされることを避けたい場合は、単純に
値を変数に代入します。
コンパイルされた C# とは異なり、新しい宣言を入力すると変数の型を変更できます。
たとえば、次の
csharp> var a = 1;
csharp> a.GetType();
System.Int32
csharp> var a = "こんにちは";
csharp> a.GetType();
System.String
csharp> ShowVars ();
文字列 a = "こんにちは"
式またはステートメントが XNUMX 行で完了しない場合、
続行プロンプトが表示されます。例:
csharp> var プロトコル = 新しい文字列 [] {
> "ftp"、
>「http」、
>「ゴーファー」
> };
csharp> プロトコル;
{ "ftp"、"http"、"gopher" }
長時間実行される計算は、Control-C シーケンスを使用して中断できます。
csharp> var 完了 = false;
csharp> while (!done) { }
中断されました!
System.Threading.ThreadAbortException: スレッドが中止されました
Class1.Host (System.Object& $retval) [0x00000]
Mono.CSharp.InteractiveShell.ExecuteBlock で (Mono.CSharp.Class ホスト、Mono.CSharp.Undo 元に戻す) [0x00000]
シャープ>
インタラクティブ EDITING
C# 対話型シェルには、より高度なコマンド ラインを提供するライン エディターが含まれています。
オペレーティング システムが提供する編集機能よりも優れています。 これらは、
コマンド ライン バージョンと同様に、GUI バージョンでは標準の Gtk# キー バインドが使用されます。
コマンド セットは他の多くのアプリケーション (カーソル キー) と似ており、いくつかの機能が組み込まれています。
編集用の Emacs コマンドと履歴メカニズム
次のキーボード入力がサポートされています。
Home 鍵、 コントロール-a
行の先頭に移動します。
終わり 鍵、 Control-e
行の最後まで行きます。
左派 矢印 鍵、 Control-b
カーソルを XNUMX 文字戻します。
右派 矢印 鍵、 Ctrl+F
カーソルを XNUMX 文字前に移動します。
Up 矢印 鍵、 Control+p
履歴に戻り、現在の行を前の行に置き換えます。
歴史。
Down 矢印 鍵、 Control-N
履歴を前方に移動し、現在の行を次の先取特権に置き換えます。
歴史。
返品 ステートメントまたは式が完了した場合、または待機する場合は現在の行を実行します。
さらに入力。
Control-C
編集中の現在の行をキャンセルします。 これにより、現在進行中のものはすべて強制終了されます
編集または部分編集を行って、トップレベルの定義に戻ります。
バックスペース キー
カーソルの前の文字を削除します
削除 鍵、 Control-d
現在のカーソル位置の文字を削除します。
Control-k
行の内容を行末まで消去し、結果を次の場所に置きます。
カットアンドペーストバッファ。
Alt-D カーソル位置から始まる単語を削除し、カットアンドペーストに追加します
バッファ。 Alt-d を繰り返し押すと、複数の単語を追加できます。
ペーストバッファ。
Ctrl+Y
Kill バッファの内容を現在のカーソル位置に貼り付けます。
Control-Q
これは引用文字です。 これにより、ユーザーは次のような制御文字を入力できます。
それ以外の場合は、コマンド編集機能によって取得されます。 Control+Qを押してから、
挿入したい文字を入力すると、そのままコマンドに挿入されます。
ライン。
Control-D
プログラムを終了します。 これでプログラムへの入力が終了します。
静的解析 PROPERTIES そして 方法
基本クラスのメソッドとプロパティはどこからステートメントと
実行される式は静的であり、シェルから直接呼び出すことができます。 これら
使用可能なプロパティとメソッドは次のとおりです。
ボイド LoadAssembly(文字列 組み立て)
指定されたアセンブリを読み込みます。 これは、コンパイラに -r: フラグを渡すことと同じです。
指定された文字列を使用します。
ボイド LoadPackage(文字列 パッケージ)
指定されたパッケージをインポートします。 これは、次のようにコンパイラを起動するのと同じです。
-pkg: フラグと指定された文字列。
string プロンプト { 得る; セッションに }
シェルによって使用されるプロンプト。 デフォルトの値は「csharp>」です。 string
継続プロンプト { 得る; 設定; } さらに入力が行われたときにシェルによって使用されるプロンプト
式またはステートメントを完成させるために必要です。
ボイド ShowVars()
これまでに定義されたすべての変数とその型を表示します。 の中に
csharp シェルで新しい変数を宣言すると、以前の変数宣言がシャドウされます。
これはコンパイル時の C# とは異なります。 ボイド ShowUsing() 使用中のすべてを表示します
有効なステートメント。 期間 Time (アクション a) 時間を計る便利なルーチン
一部のコードは実行に時間がかかります。 パラメータはアクションデリゲートであり、戻り値は
値は TimeSpan です。 例えば:
csharp> Time (() => { for (int i = 0; i < 5; i++) Console.WriteLine (i);});
0
1
2
3
4
00:00:00.0043230
シャープ>
戻り値は TimeSpan であり、ベンチマーク用の変数に格納できます。
目的。
GUI 方法 そして PROPERTIES
コンソール バージョンで使用できるメソッドとプロパティに加えて、
GUI バージョンではいくつかの追加プロパティを利用できます。 たとえば「PaneContainer」
Gtk.Container が公開されており、プロトタイピング中に Gtk# ウィジェットをホストするために使用できます。
現在のトップレベル ウィンドウにアクセスできるようにする「MainWindow」プロパティ。
起動 ファイル
C# シェルは、次の場所にあるすべての Mono アセンブリと C# スクリプト ファイルを読み込みます。
~/.config/csharp Unix 上のディレクトリ。 アセンブリはソース ファイルが読み込まれる前に読み込まれます。
ロードされました。
C# スクリプト ファイルは拡張子 .cs を持つファイルであり、次の内容のみを含める必要があります。
ステートメントと式には、完全なクラス定義を含めることはできません(少なくとも、
Mono 2.0の)。 完全なクラス定義は DLL にコンパイルし、そこに保存する必要があります。
ディレクトリにあります。
作者
Mono C#コンパイラは、Miguel de Icaza、Ravi Pratap、Martin Baulig、Marekによって作成されました。
SafarとRajaHarinath。 開発はXimian、Novell、MarekSafarによって資金提供されました。
onworks.net サービスを使用してオンラインで csharp を使用する