Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| csharp [Le 15/02/2023, 10:31] – créée rafbor | csharp [Le 01/02/2025, 14:47] (Version actuelle) – Mise à jour pour la version courante rafbor | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag>Bionic Focal Jammy programmation |
| ---- | ---- | ||
| ====== C# ====== | ====== C# ====== | ||
| - | C# (CSharp) est un langage de programmation orientée objet, développé par Microsoft pour la plateforme .NET, dérivé de C, C++ et proche du Java. | + | [[wpfr> |
| ===== Pré-requis ===== | ===== Pré-requis ===== | ||
| Ligne 19: | Ligne 19: | ||
| Dans chaque cas, suivre cette [[https:// | Dans chaque cas, suivre cette [[https:// | ||
| - | <note info> | + | <note info>depuis Ubuntu 22.04, |
| - | Pour vérifier la version du SDK installée, exécuter dans un terminal | + | Pour vérifier la version du SDK installée, exécuter dans un [[:terminal]]: |
| - | < | + | < |
| - | < | + | Le résultat doit être similaire à: |
| + | < | ||
| + | Pour vérifier la version du runtime installée: | ||
| + | < | ||
| + | Le résultat doit être similaire à: | ||
| + | < | ||
| + | Microsoft.AspNetCore.App 8.0.12 [/ | ||
| + | Microsoft.NETCore.App 8.0.12 [/ | ||
| + | </ | ||
| - | ===== Autres étapes | + | ===== Outils pour le développement |
| - | Puis... | + | Un projet |
| + | Il existe également MonoDevelop qui est un IDE gratuit et open source spécialement développé par des passionnés pour amener .NET sur Linux. Fonctionne très bien avec le langage C# | ||
| - | ===== Conclusion | + | ===== Création d'une application console .NET sans IDE ===== |
| - | Voila, vous savez maintenant faire le café avec Ubuntu | + | - Créer un dossier '' |
| + | - Ouvrir un [[: | ||
| + | - Exécuter la commande: | ||
| + | < | ||
| + | Plusieurs fichiers vont être créés dont le fichier: | ||
| + | <file cpp Program.cs> | ||
| + | namespace TestHelloWorld; | ||
| + | class Program | ||
| + | { | ||
| + | static void Main(string[] args) | ||
| + | { | ||
| + | Console.WriteLine(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Pour lancer l' | ||
| + | < | ||
| + | Résultat: | ||
| + | < | ||
| - | ===== Problèmes connus===== | + | ===== Création d'une application avec IHM dans Visual Studio Code ===== |
| - | Si votre café est trop fort, saisissez | + | Pré-requis: |
| + | * Pour développer en C#, il faut installer l' | ||
| + | * Pour créer une IHM, il faut utiliser un framework tel que [[https:// | ||
| + | Procéder ainsi:\\ | ||
| + | * Dans le terminal intégré de Visual Studio Code, exécuter cette commande pour installer le modèle: | ||
| + | < | ||
| + | * Vérifier que le modèle | ||
| + | < | ||
| + | Le résultat doit être: | ||
| + | < | ||
| + | * Choisir '' | ||
| + | * Dans le terminal intégré de Visual Studio Code, exécuter cette commande: | ||
| + | < | ||
| + | Plusieurs fichiers vont se créer, dont '' | ||
| + | <file cpp MainWindow.cs> | ||
| + | using System; | ||
| + | using Gtk; | ||
| + | using UI = Gtk.Builder.ObjectAttribute; | ||
| + | |||
| + | namespace TestGUI | ||
| + | { | ||
| + | class MainWindow : Window | ||
| + | { | ||
| + | [UI] private Label _label1 = null; | ||
| + | [UI] private Button _button1 = null; | ||
| + | |||
| + | private int _counter; | ||
| + | |||
| + | public MainWindow() : this(new Builder(" | ||
| + | |||
| + | private MainWindow(Builder builder) : base(builder.GetRawOwnedObject(" | ||
| + | { | ||
| + | builder.Autoconnect(this); | ||
| + | |||
| + | DeleteEvent += Window_DeleteEvent; | ||
| + | _button1.Clicked += Button1_Clicked; | ||
| + | } | ||
| + | |||
| + | private void Window_DeleteEvent(object sender, DeleteEventArgs a) | ||
| + | { | ||
| + | Application.Quit(); | ||
| + | } | ||
| + | |||
| + | private void Button1_Clicked(object sender, EventArgs a) | ||
| + | { | ||
| + | _counter++; | ||
| + | _label1.Text = "Hello World! This button has been clicked " + _counter + " time(s)."; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Pour lancer l' | ||
| + | < | ||
| + | Le résultat sera une fenêtre avec le texte '' | ||
| + | |||
| + | ===== Publication ===== | ||
| + | Pour le déploiement d'une application, | ||
| + | |||
| + | Pour plus d' | ||
| + | |||
| + | ===== Scripts ===== | ||
| + | Créer un projet .NET pour de petites tâches simples est un peu excessif. Pour cela il existe [[https:// | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Pré-requis: | ||
| + | |||
| + | Exécuter | ||
| + | < | ||
| + | |||
| + | ==== Création d'un script ==== | ||
| + | dotnet-script est doté d'une commande d' | ||
| + | * Créer un dossier '' | ||
| + | * Ouvrir un [[: | ||
| + | * Exécuter la commande: | ||
| + | < | ||
| + | Deux fichiers vont se créer: '' | ||
| + | * '' | ||
| + | * '' | ||
| + | <file cpp main.csx> | ||
| + | # | ||
| + | Console.WriteLine(" | ||
| + | </ | ||
| + | * Sur Linux, les scripts ainsi créés peuvent être exécutés directement comme s'ils étaient des exécutables. Vérifiez que le script fonctionne en exécutant la commande suivante: | ||
| + | < | ||
| + | Résultat: | ||
| + | < | ||
| + | Ci dessous un exemple qui exploite un peu plus le potentiel de .NET en créant un tableau de personnes (nom et âge). Le script se verra passer un paramètre, stocké dans la variable '' | ||
| + | Modifiez le fichier '' | ||
| + | <file cpp main.csx> | ||
| + | # | ||
| + | |||
| + | using System; | ||
| + | using System.Data; | ||
| + | |||
| + | Int16 nAge = 0; | ||
| + | if (Args.Count > 0) | ||
| + | nAge = Convert.ToInt16(Args[0]); | ||
| + | else | ||
| + | { | ||
| + | Console.WriteLine(" | ||
| + | return; | ||
| + | } | ||
| + | DataTable dtable = new DataTable(); | ||
| + | dtable.Columns.Add(" | ||
| + | dtable.Columns.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | dtable.Rows.Add(" | ||
| + | int n=0; | ||
| + | DataRow[] dtRows; | ||
| + | dtRows = dtable.Select(" | ||
| + | string strResult; | ||
| + | Console.WriteLine(" | ||
| + | foreach(DataRow row in dtRows) | ||
| + | { | ||
| + | strResult = string.Format(" | ||
| + | Console.WriteLine(strResult); | ||
| + | } | ||
| + | </ | ||
| + | Exécuter le script avec la commande: | ||
| + | < | ||
| + | Résultat: | ||
| + | < | ||
| + | Ont moins de 50 ans | ||
| + | Lorenzo | ||
| + | Federico | ||
| + | Leonardo | ||
| + | Roberto | ||
| + | Silvia | ||
| + | Gabriele | ||
| + | Mattia | ||
| + | </ | ||
| + | ==== Mode REPL (Read-Evaluate-Print-Loop) ==== | ||
| + | Le mode REPL ("mode interactif" | ||
| + | |||
| + | Le mode interactif permet de fournir des blocs individuels de code C# qui sont exécutés dès que l'on appuie sur la touche Entrée: | ||
| + | < | ||
| + | ~$ dotnet script | ||
| + | > var x = 1; | ||
| + | > x+x | ||
| + | 2 | ||
| + | </ | ||
| + | |||
| + | ===== Résolution des problèmes ===== | ||
| + | |||
| + | Consulter [[https:// | ||
| + | < | ||
| + | dotnet run</ | ||
| ===== Voir aussi ===== | ===== Voir aussi ===== | ||
| Ligne 43: | Ligne 224: | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| ---- | ---- | ||
| // | // | ||
