Dies ist der Befehl csharp, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
csharp, gsharp – Interaktive C#-Shell
ZUSAMMENFASSUNG
scharf [--anfügen PID] [-e AUSDRUCK] [Datei1 [Datei2]] [Optionen]
gis [Datei1 [Datei2]]
BESCHREIBUNG
Die scharf ist eine interaktive C#-Shell, die es dem Benutzer ermöglicht, C# einzugeben und auszuwerten
Anweisungen und Ausdrücke über die Befehlszeile. Das regelmäßige Mcs Befehlszeilenoptionen
kann in dieser Version des Compilers verwendet werden.
Die gis Der Befehl ist eine GUI-Version des C#-Interpreters, der Gtk# verwendet und eine bereitstellt
Bereich zum Anhängen von Widgets. Diese Version kann an andere Gtk# angehängt werden
Anwendungen auf sichere Weise, da es sich in die Hauptschleife einer Gtk#-Anwendung einfügt,
Vermeidung von Problemen, die sich aus der Multithread-Natur der Injektion in a ergeben
Zielprozess.
In der Befehlszeile angegebene Dateien werden geladen und als Skripte ausgeführt.
Beginnend mit Mono 2.10, dem scharf Der Befehl kann als Interpreter verwendet werden, der von ausgeführt wird
Ausführbare Dateien, die mit dem Unix-Ausführungsattribut gekennzeichnet sind. Machen Sie dazu die erste Zeile
Ihr C#-Quellcode sieht so aus:
„#!/usr/bin/csharp“
Console.WriteLine („Hallo, Welt“);
OPTIONAL
Die Befehle akzeptieren alle Befehle, die dem zur Verfügung stehen Mcs Befehl, damit Sie es können
Verweisen Sie auf Assemblys, geben Sie Pfade, Sprachniveau usw. über die Befehlszeile an. In
Darüber hinaus werden die folgenden Befehlszeilenoptionen unterstützt:
--anfügen
Dies ist eine erweiterte Option und sollte nur verwendet werden, wenn Sie über umfassende Kenntnisse verfügen
von Multithreading. Diese Option ist auf der verfügbar scharf Befehl und erlaubt
Der Compiler soll in andere Prozesse eingefügt werden. Dies geschieht durch die Injektion von C#
Shell in einem separaten Thread, der gleichzeitig mit Ihrer Anwendung ausgeführt wird. Das
bedeutet, dass Sie besondere Maßnahmen ergreifen müssen, um einen Absturz der Zielanwendung zu vermeiden
während Sie es verwenden. Beispielsweise müssen Sie möglicherweise vorher die richtigen Schlösser anbringen
Ausgeben von Befehlen, die sich auf den Zielprozessstatus auswirken könnten, oder Senden
Befehle über einen Methoden-Dispatcher.
-e AUSDRUCK
Dadurch wird der angegebene C#-AUSDRUCK ausgewertet und beendet
OPERATION
Sobald Sie den Befehl csharp starten, werden Sie mit der interaktiven Eingabeaufforderung begrüßt:
$ csharp
Mono-C#-Shell, geben Sie „help;“ ein. für Hilfe
Geben Sie unten Aussagen ein.
csharp>
Eine Reihe von Namespaces sind mit C# vordefiniert, darunter System, System.Linq,
System.Collections und System.Collections.Generic. Im Gegensatz zum kompilierten Modus ist dies der Fall
Es ist möglich, neue using-Anweisungen hinzuzufügen, während Sie Code eingeben, zum Beispiel:
csharp> neues XmlDocument ();
(1,6): Fehler CS0246: Der Typ- oder Namespacename „XmlDocument“ konnte nicht gefunden werden. Fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?
csharp> mit System.Xml;
csharp> neues XmlDocument ();
System.Xml.XmlDocument
Jedes Mal, wenn ein Befehl eingegeben wird, gehört der Gültigkeitsbereich dieses Befehls zu einer abgeleiteten Klasse
aus der Klasse Mono.CSharp.InteractiveBase. Diese Klasse definiert eine Reihe von statischen
Eigenschaften und Methoden. Um eine Liste der verfügbaren Befehle anzuzeigen, rufen Sie die „Hilfe“ auf.
Eigentum:
csharp> Hilfe;
„Statische Methoden:
LoadPackage (Paket); - Lädt das angegebene Paket (wie -pkg:FILE)
[...]
ShowVars (); - Zeigt definierte lokale Variablen an.
ShowUsing (); - Aktiv mit Dekltionen anzeigen.
Hilfe;
"
csharp>
Wenn Ausdrücke eingegeben werden, zeigt die C#-Shell das Ergebnis der Ausführung an
Ausdruck:
csharp> Math.Sin (Math.PI/4);
0.707106781186547
csharp> 1+1;
2
csharp> "Hallo Welt".IndexOf (',');
5
Die C#-Shell verwendet die ToString()-Methode für das zurückgegebene Objekt, um das Objekt anzuzeigen
kann manchmal einschränkend sein, da Objekte, die die ToString()-Methode nicht überschreiben, dies tun
Holen Sie sich das Standardverhalten von System.Object, das lediglich darin besteht, ihren Typnamen anzuzeigen:
csharp> var a = new XmlDocument ();
csharp> a;
System.Xml.Document
csharp> csharp> a.Name;
"#dokumentieren"
csharp>
Einige Datentypen werden von der interaktiven C#-Shell speziell wie Arrays behandelt.
System.Collections.Hashtable, Objekte, die System.Collections.IEnumerable implementieren und
IDictionary und werden speziell gerendert, anstatt nur ToString() zu verwenden:
csharp> var seiten = new Hashtable () {
> { "Mono", "http://www.mono-project.com/" },
> { "Linux", "http://kernel.org" } };
csharp> Seiten;
{{ "Mono", "http://www.mono-project.com/" }, { "Linux", "http://kernel.org" }}
Seit System.Linq ist es möglich, LINQ direkt in der interaktiven C#-Shell zu verwenden
Namespace wurde beim Start importiert. Das folgende Beispiel ruft eine Liste aller ab
Dateien, auf die seit einer Woche nicht zugegriffen wurde / Tmp:
csharp> mit System.IO;
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> var old_files = from f in Directory.GetFiles ("/ Tmp")
> let fi = new FileInfo (f)
> wobei fi.LastAccessTime < LastWeek select f;
csharp>
Sie können die Ergebnisse natürlich auch in einer einzigen Anweisung ausdrucken:
csharp> mit System.IO;
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> von f in Directory.GetFiles ("/ Tmp")
> let fi = new FileInfo (f)
> wobei fi.LastAccessTime < last_week select f;
[...]
csharp>
LINQ und seine funktionale Grundlage erzeugen On-Demand-Code für IEnumerable-Rückgabewerte.
Beispielsweise ist der Rückgabewert einer Verwendung von „from“ ein IEnumerable, das ausgewertet wird
Nachfrage. Das automatische Rendern von IEnumerables in der Befehlszeile löst das aus
Die IEnumerable-Pipeline wird an diesem Punkt ausgeführt, anstatt dass ihre Ausführung verzögert wird
bis zu einem späteren Zeitpunkt.
Wenn Sie vermeiden möchten, dass das IEnumerable an dieser Stelle gerendert wird, weisen Sie es einfach zu
Wert zu einer Variablen.
Im Gegensatz zu kompiliertem C# kann der Typ einer Variablen geändert werden, wenn eine neue Deklaration eingegeben wird.
beispielsweise:
csharp> var a = 1;
csharp> a.GetType ();
System.Int32
csharp> var a = "Hallo";
csharp> a.GetType ();
System.String
csharp> ShowVars ();
string a = „Hallo“
Für den Fall, dass ein Ausdruck oder eine Anweisung nicht in einer einzigen Zeile abgeschlossen ist, a
Es wird eine Fortsetzungsaufforderung angezeigt, zum Beispiel:
csharp> var Protokolle = neue Zeichenfolge [] {
> „ftp“,
> „http“,
> „Gopher“
> };
csharp> Protokolle;
{ „ftp“, „http“, „gopher“ }
Lange laufende Berechnungen können mit der Control-C-Sequenz unterbrochen werden:
csharp> var done = false;
csharp> while (!done) { }
Unterbrochen!
System.Threading.ThreadAbortException: Thread wurde abgebrochen
bei Class1.Host (System.Object& $retval) [0x00000]
bei Mono.CSharp.InteractiveShell.ExecuteBlock (Mono.CSharp.Class-Host, Mono.CSharp.Undo undo) [0x00000]
csharp>
INTERAKTIV BEARBEITEN
Die interaktive C#-Shell enthält einen Zeileneditor, der eine erweiterte Befehlszeile bereitstellt
Bearbeitungsfunktionen, als das Betriebssystem bietet. Diese sind im erhältlich
Befehlszeilenversion, die GUI-Versionen verwenden die standardmäßigen Gtk#-Tastenkombinationen.
Der Befehlssatz ähnelt vielen anderen Anwendungen (Cursortasten) und beinhaltet einige
der Emacs-Befehle zum Bearbeiten sowie einen Verlaufsmechanismus dazu
Folgende Tastatureingaben werden unterstützt:
Startseite Schlüssel, Strg-a
Geht zum Anfang der Zeile.
Ende Schlüssel, Control-e
Geht zum Ende der Zeile.
Links Pfeil Schlüssel, Control-b
Bewegt den Cursor um ein Zeichen zurück.
Rechts Pfeil Schlüssel, Control-f
Bewegt den Cursor um ein Zeichen vorwärts.
Up Pfeil Schlüssel, Control-p
Geht im Verlauf zurück und ersetzt die aktuelle Zeile durch die vorherige Zeile im
Info.
Nach unten Pfeil Schlüssel, Control-n
Geht in der Historie vorwärts und ersetzt die aktuelle Zeile durch die nächste Zeile in der
Info.
Return Führt die aktuelle Zeile aus, wenn die Anweisung oder der Ausdruck vollständig ist, oder wartet darauf
weitere Eingaben.
Kontrolle-C
Brechen Sie die aktuelle Bearbeitung der Zeile ab. Dadurch werden alle derzeit ausgeführten Aktionen beendet
Bearbeitungen oder Teilbearbeitungen und kehren Sie zu einer Definition der obersten Ebene zurück.
Rücktaste Wesentliche
Löscht das Zeichen vor dem Cursor
Löschen Schlüssel, Control-d
Löscht das Zeichen an der aktuellen Cursorposition.
Control-k
Löscht den Inhalt der Zeile bis zum Ende der Zeile und fügt das Ergebnis ein
der Cut-and-Paste-Puffer.
Alt-D Löscht das Wort ab der Cursorposition und fügt es in die Ausschneide- und Einfügezeile ein
Puffer. Durch wiederholtes Drücken von Alt-d können mehrere Wörter angehängt werden
Puffer einfügen.
Strg-Y
Fügt den Inhalt des Kill-Puffers an der aktuellen Cursorposition ein.
Control-Q
Dies ist das Anführungszeichen. Es ermöglicht dem Benutzer, Steuerzeichen einzugeben
werden ansonsten von der Befehlsbearbeitungsfunktion übernommen. Drücken Sie Strg-Q und anschließend
Geben Sie das Zeichen ein, das Sie einfügen möchten, und es wird wörtlich in den Befehl eingefügt
Linie.
Strg-D
Beendet das Programm. Damit ist die Eingabe für das Programm beendet.
STATIC IMMOBILIEN UND METHODEN
Da die Methoden und Eigenschaften der Basisklasse, aus denen die Anweisungen und stammen
Da die ausgeführten Ausdrücke statisch sind, können sie direkt aus der Shell aufgerufen werden. Diese
sind die verfügbaren Eigenschaften und Methoden:
ungültig LoadAssembly(string Versammlung)
Lädt die angegebene Assembly. Dies entspricht der Übergabe des Flags -r: an den Compiler
mit der angegebenen Zeichenfolge.
ungültig LoadPackage(string Paket)
Importiert das angegebene Paket. Dies entspricht dem Aufruf des Compilers mit
das Flag -pkg: mit der angegebenen Zeichenfolge.
Schnur Prompt { werden; kompensieren }
Die von der Shell verwendete Eingabeaufforderung. Der Standardwert ist „csharp>“. Schnur
ContinuationPrompt { werden; einstellen; } Die von der Shell verwendete Eingabeaufforderung, wenn weitere Eingaben erfolgen
erforderlich, um den Ausdruck oder die Anweisung zu vervollständigen.
ungültig ShowVars()
Zeigt alle bisher definierten Variablen und deren Typen an. Im
Die Deklaration neuer Variablen durch die csharp-Shell überschattet frühere Variablendeklarationen.
Dies unterscheidet sich beim Kompilieren von C#. ungültig ShowUsing() Zeigt alle Verwendungen an
Aussagen in Kraft. Zeitspanne Uhrzeit (Aktion a) Praktische Routine, um die Zeit zu messen
Es dauert etwas Code, bis er ausgeführt wird. Der Parameter ist ein Aktionsdelegat und die Rückgabe
value ist eine TimeSpan. Zum Beispiel:
csharp> Time (() => { for (int i = 0; i < 5; i++) Console.WriteLine (i);});
0
1
2
3
4
00:00:00.0043230
csharp>
Der Rückgabewert ist eine TimeSpan, die Sie zum Benchmarking in einer Variablen speichern können
Zwecke.
GUI METHODEN UND IMMOBILIEN
Zusätzlich zu den in der Konsolenversion verfügbaren Methoden und Eigenschaften gibt es eine
Handvoll zusätzlicher Eigenschaften, die in der GUI-Version verfügbar sind. Zum Beispiel ein „PaneContainer“
Gtk.Container wird bereitgestellt, den Sie zum Hosten von Gtk#-Widgets beim Prototyping oder beim Hosten verwenden können
„MainWindow“-Eigenschaft, die Ihnen Zugriff auf das aktuelle Fenster der obersten Ebene ermöglicht.
STARTUP DATEIEN
Die C#-Shell lädt alle Mono-Assemblys und C#-Skriptdateien, die sich in befinden
~/.config/csharp Verzeichnis unter Unix. Die Assemblys werden vor den Quelldateien geladen
geladen.
C#-Skriptdateien sind Dateien mit der Erweiterung .cs und sollten nur enthalten
Anweisungen und Ausdrücke können keine vollständigen Klassendefinitionen enthalten (zumindest nicht als).
von Mono 2.0). Vollständige Klassendefinitionen sollten in DLLs kompiliert und darin gespeichert werden
Verzeichnis.
AUTOREN
Der Mono C# Compiler wurde von Miguel de Icaza, Ravi Pratap, Martin Baulig, Marek . geschrieben
Safar und Raja Harinath. Die Entwicklung wurde von Ximian, Novell und Marek Safar finanziert.
Verwenden Sie csharp online über die Dienste von onworks.net