csharp - En ligne dans le Cloud

Il s'agit de la commande csharp qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos nombreux postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


csharp, gsharp - Shell C# interactif

SYNOPSIS


tranchant [--attacher [PID] [-e EXPRESSION] [fichier1 [fichier2]] [choix]

sol dièse [fichier1 [fichier2]]

DESCRIPTION


Le site de tranchant est un shell C# interactif qui permet à l'utilisateur de saisir et d'évaluer C#
instructions et expressions de la ligne de commande. Le mcs options de ligne de commande
peut être utilisé dans cette version du compilateur.

Le site de sol dièse La commande est une version GUI de l'interpréteur C# qui utilise Gtk# et fournit un
Zone permettant également d'attacher des widgets. Cette version peut être attachée à d'autres Gtk#.
applications de manière sécurisée car il s'injecte dans la boucle principale d'une application Gtk#,
évitant ainsi tout problème découlant de la nature multithread de son injection dans un
processus cible.

Les fichiers spécifiés dans la ligne de commande seront chargés et exécutés en tant que scripts.

À partir de Mono 2.10, le tranchant la commande peut être utilisée comme un interpréteur exécuté par
exécutables marqués avec l'attribut Unix execute. Pour ce faire, définissez la première ligne de
votre code source C# ressemble à ceci :
"#!/usr/bin/csharp"
Console.WriteLine ("Bonjour le monde");

OPTIONS


Les commandes acceptent toutes les commandes disponibles pour le mcs commande, pour que vous puissiez
Assemblages de référence, spécifier les chemins, le niveau de langue, etc. depuis la ligne de commande.
De plus, les options de ligne de commande suivantes sont prises en charge :

--attacher
Il s'agit d'une option avancée et ne doit être utilisée que si vous avez une compréhension approfondie
du multithreading. Cette option est disponible sur tranchant commande et permet
le compilateur à injecter dans d'autres processus. Cela se fait en injectant le code C#
shell dans un thread distinct qui s'exécute en même temps que votre application. Ceci
signifie que vous devez prendre des mesures spéciales pour éviter de planter l'application cible
pendant son utilisation. Par exemple, vous devrez peut-être prendre les bonnes serrures avant
émettre des commandes susceptibles d'affecter l'état du processus cible ou envoyer
commandes via un répartiteur de méthodes.

-e EXPRESSION
Cela évaluera l'EXPRESSION C# spécifiée et quittera

FONCTIONNEMENT


Une fois que vous lancez la commande csharp, vous serez accueilli par l'invite interactive :

$ csharp
Mono C# Shell, tapez « help » pour obtenir de l'aide

Saisissez les déclarations ci-dessous.
csharp>

Un certain nombre d'espaces de noms sont prédéfinis avec C#, notamment System, System.Linq,
System.Collections et System.Collections.Generic. Contrairement au mode compilé, il est
il est possible d'ajouter de nouvelles instructions à l'aide de l'outil lorsque vous tapez du code, par exemple :

csharp> nouveau XmlDocument ();
(1,6) : erreur CS0246 : Le type ou l'espace de noms « XmlDocument » est introuvable. Manque-t-il une directive using ou une référence d'assembly ?
csharp> en utilisant System.Xml;
csharp> nouveau XmlDocument ();
System.Xml.XmlDocument

Chaque fois qu'une commande est tapée, la portée de cette commande est celle d'une classe qui dérive
de la classe Mono.CSharp.InteractiveBase. Cette classe définit un certain nombre de
Propriétés et méthodes. Pour afficher la liste des commandes disponibles, accédez à l'aide.
propriété:
csharp> aide;
"Méthodes statiques :
LoadPackage (pkg); - Charge le package donné (comme -pkg:FILE)
[...]
ShowVars (); - Affiche les variables locales définies.
ShowUsing (); - Afficher les options d'utilisation actives.
Aidez-moi;
"
csharp>

Lorsque des expressions sont saisies, le shell C# affiche le résultat de l'exécution de l'expression.
expression:

csharp> Math.Sin (Math.PI/4);
0.707106781186547
csharp> 1+1;
2
csharp> "Bonjour tout le monde".IndexOf (',');
5

Le shell C# utilise la méthode ToString() sur l'objet renvoyé pour afficher l'objet, ceci
peut parfois être limitant puisque les objets qui ne remplacent pas la méthode ToString()
obtenir le comportement par défaut de System.Object qui consiste simplement à afficher leur nom de type :

csharp> var a = nouveau XmlDocument ();
csharp> a;
System.Xml.Document
csharp> csharp> a.Nom;
"#document"
csharp>

Quelques types de données sont gérés spécialement par le shell interactif C# comme les tableaux,
System.Collections.Hashtable, objets qui implémentent System.Collections.IEnumerable et
IDictionary et sont rendus spécialement au lieu d'utiliser simplement ToString() :

csharp> var pages = nouvelle table de hachage () {
> { "Mono", "http://www.mono-project.com/" },
> { "Linux", "http://kernel.org" } };
csharp> pages;
{{ "Mono", "http://www.mono-project.com/" }, { "Linux", "http://kernel.org" }}

Il est possible d'utiliser LINQ directement dans le shell interactif C# depuis System.Linq
L'espace de noms a été importé au démarrage. L'exemple suivant obtient la liste de tous les
fichiers qui n'ont pas été consultés depuis une semaine / Tmp:

csharp> en utilisant System.IO;
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> var old_files = from f dans Directory.GetFiles ("/ Tmp")
> laissez fi = nouveau FileInfo (f)
> où fi.LastAccessTime < LastWeek sélectionnez f;
csharp>

Vous pouvez bien sûr également imprimer les résultats dans une seule instruction :

csharp> en utilisant System.IO;
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> de f dans Directory.GetFiles ("/ Tmp")
> laissez fi = nouveau FileInfo (f)
> où fi.LastAccessTime < last_week sélectionnez f;
[...]
csharp>

LINQ et sa base fonctionnelle produisent du code à la demande pour les valeurs de retour IEnumerable.
Par exemple, la valeur de retour d'une utilisation de « from » est un IEnumerable qui est évalué sur
demande. Le rendu automatique des IEnumerables sur la ligne de commande déclenchera la
Pipeline IEnumerable à exécuter à ce stade au lieu de voir son exécution retardée
jusqu'à un moment ultérieur.

Si vous souhaitez éviter que l'IEnumerable soit rendu à ce stade, attribuez simplement le
valeur à une variable.

Contrairement au C# compilé, le type d'une variable peut être modifié si une nouvelle déclaration est saisie,
par exemple:

csharp> var a = 1;
csharp> a.GetType ();
Système.Int32
csharp> var a = "Bonjour";
csharp> a.GetType ();
Système.String
csharp> Afficher les variables ();
chaîne a = "Bonjour"

Dans le cas où une expression ou une instruction n'est pas complétée sur une seule ligne, un
l'invite de continuation s'affiche, par exemple :

csharp> var protocoles = nouvelle chaîne [] {
> "ftp",
> "http",
> "gopher"
> };
csharp> protocoles ;
{ "ftp", "http", "gopher" }

Les calculs de longue durée peuvent être interrompus en utilisant la séquence Control-C :

csharp> var done = false;
csharp> while (!done) { }
Interrompu!
System.Threading.ThreadAbortException : le thread était en cours d'interruption
à Class1.Host (System.Object& $retval) [0x00000]
à Mono.CSharp.InteractiveShell.ExecuteBlock (hôte Mono.CSharp.Class, annulation Mono.CSharp.Undo) [0x00000]
csharp>

INTERACTIF ÉDITION


Le shell interactif C# contient un éditeur de ligne qui fournit une ligne de commande plus avancée
fonctionnalités d'édition que celles offertes par le système d'exploitation. Celles-ci sont disponibles dans
version en ligne de commande, les versions GUI utilisent les raccourcis clavier Gtk# standard.

L'ensemble de commandes est similaire à de nombreuses autres applications (touches de curseur) et intègre certaines
des commandes Emacs pour l'édition ainsi qu'un mécanisme d'historique pour

Les entrées clavier suivantes sont prises en charge :

Accueil Clé, Contrôle-a
Va au début de la ligne.

Fin Clé, Contrôle-e
Va jusqu'au bout de la ligne.

Gauche flèche Clé, Contrôle-b
Déplace le curseur d'un caractère vers l'arrière.

Droite flèche Clé, Contrôle-f
Déplace le curseur d'un caractère vers l'avant.

Up flèche Clé, Contrôle-p
Revient en arrière dans l'historique, remplace la ligne actuelle par la ligne précédente dans le
l'histoire.

Vers le bas flèche Clé, Contrôle-n
Avance dans l'historique, remplace la ligne actuelle par le lien suivant dans le
l'histoire.

Retour Exécute la ligne en cours si l'instruction ou l'expression est terminée, ou attend
contribution supplémentaire.

Contrôle-C
Annuler la ligne en cours de modification. Cela supprimera toute modification en cours.
modifications ou modifications partielles et retour à une définition de niveau supérieur.

Retour arrière ACTIVITES
Supprime le caractère avant le curseur

Supprimer Clé, Contrôle-d
Supprime le caractère à la position actuelle du curseur.

Contrôle-k
Efface le contenu de la ligne jusqu'à la fin de la ligne et place le résultat dans
le tampon couper-coller.

Alt+D Supprime le mot commençant à la position du curseur et l'ajoute au copier-coller
tampon. En appuyant plusieurs fois sur Alt-d, plusieurs mots peuvent être ajoutés au
coller le tampon.

Contrôle-Y
Colle le contenu du tampon de suppression à la position actuelle du curseur.

Contrôle-Q
Il s'agit du caractère guillemet. Il permet à l'utilisateur de saisir des caractères de contrôle
sont sinon prises en charge par la fonction d'édition de commandes. Appuyez sur Ctrl-Q puis sur
le caractère que vous souhaitez insérer, et il sera inséré textuellement dans la commande
ligne.

Contrôle-D
Termine le programme. Ceci met fin à la saisie du programme.

STATIC PROPRIÉTÉS ET MÉTHODES


Étant donné que les méthodes et les propriétés de la classe de base d'où proviennent les instructions et
Les expressions exécutées sont statiques et peuvent être invoquées directement depuis le shell.
sont les propriétés et méthodes disponibles :

annuler LoadAssembly(chaîne assemblée)
Charge l'assembly donné. Cela équivaut à passer l'option -r: au compilateur.
avec la chaîne spécifiée.

annuler LoadPackage(chaîne paquet)
Importe le package spécifié. Cela équivaut à appeler le compilateur avec
le drapeau -pkg: avec la chaîne spécifiée.

un magnifique Prompt { obtenir; set }
L'invite utilisée par le shell. Sa valeur par défaut est « csharp> ». un magnifique
ContinuationPrompt { obtenir; ensemble; } L'invite utilisée par le shell lorsque d'autres entrées sont nécessaires
nécessaire pour compléter l'expression ou l'énoncé.

annuler Afficher les variables()
Affiche toutes les variables définies jusqu'à présent et leurs types.
le shell csharp déclarant de nouvelles variables masquera les déclarations de variables précédentes,
c'est différent de C# une fois compilé. annuler AfficherUtilisation() Affiche toutes les utilisations
déclarations en vigueur. Durée Heure (Action a) Routine pratique pour chronométrer le moment où
L'exécution de certains codes est nécessaire. Le paramètre est un délégué d'action, et le retour
La valeur est une valeur de type TimeSpan. Par exemple :

csharp> Heure (() => { pour (int i = 0; i < 5; i++) Console.WriteLine (i);});
0
1
2
3
4
00:00:00.0043230
csharp>

La valeur de retour est un TimeSpan, que vous pouvez stocker dans une variable à des fins d'analyse comparative.
fins pratiques.

GUI MÉTHODES ET PROPRIÉTÉS


En plus des méthodes et propriétés disponibles dans la version console, il existe un
Quelques propriétés supplémentaires sont disponibles dans la version GUI. Par exemple, un « PaneContainer »
Gtk.Container est exposé et vous pouvez l'utiliser pour héberger des widgets Gtk# pendant le prototypage ou le
Propriété « MainWindow » qui vous donne accès à la fenêtre de niveau supérieur actuelle.

STARTUP DES DOSSIERS


Le shell C# chargera tous les assemblys Mono et les fichiers de script C# situés dans le
~/.config/csharp sous Unix. Les assemblages sont chargés avant que les fichiers sources ne soient
chargé.

Les fichiers de script C# sont des fichiers qui ont l'extension .cs et ils ne doivent contenir que
instructions et expressions, elles ne peuvent pas contenir de définitions de classe complètes (du moins pas aussi
de Mono 2.0). Les définitions de classe complètes doivent être compilées dans des DLL et stockées dans celles-ci.
répertoire.

AUTEURS


Le compilateur Mono C# a été écrit par Miguel de Icaza, Ravi Pratap, Martin Baulig, Marek
Safar et Raja Harinath. Le développement a été financé par Ximian, Novell et Marek Safar.

Utilisez csharp en ligne avec les services onworks.net



Derniers programmes en ligne Linux et Windows