Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Console classe

 

Date de publication : novembre 2016

Représente les flux standard d'entrée, de sortie et d'erreur pour les applications console. Cette classe ne peut pas être héritée.

Pour parcourir le code source de .NET Framework pour ce type, consultez la Reference Source.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)


public static class Console

NomDescription
System_CAPS_pubpropertySystem_CAPS_staticBackgroundColor

Obtient ou définit la couleur d'arrière-plan de la console.

System_CAPS_pubpropertySystem_CAPS_staticBufferHeight

Obtient ou définit la hauteur de la zone de mémoire tampon.

System_CAPS_pubpropertySystem_CAPS_staticBufferWidth

Obtient ou définit la largeur de la zone de mémoire tampon.

System_CAPS_pubpropertySystem_CAPS_staticCapsLock

Obtient une valeur indiquant si la bascule de la touche VERR. MAJ est activée ou désactivée.

System_CAPS_pubpropertySystem_CAPS_staticCursorLeft

Obtient ou définit la position de colonne du curseur dans la zone de mémoire tampon.

System_CAPS_pubpropertySystem_CAPS_staticCursorSize

Obtient ou définit la hauteur du curseur dans une cellule de caractère.

System_CAPS_pubpropertySystem_CAPS_staticCursorTop

Obtient ou définit la position de ligne du curseur dans la zone de mémoire tampon.

System_CAPS_pubpropertySystem_CAPS_staticCursorVisible

Obtient ou définit une valeur indiquant si le curseur est visible.

System_CAPS_pubpropertySystem_CAPS_staticError

Obtient le flux de sortie d'erreur standard.

System_CAPS_pubpropertySystem_CAPS_staticForegroundColor

Obtient ou définit la couleur de premier plan de la console.

System_CAPS_pubpropertySystem_CAPS_staticIn

Obtient le flux d'entrée standard.

System_CAPS_pubpropertySystem_CAPS_staticInputEncoding

Obtient ou définit l'encodage que la console utilise pour lire l'entrée.

System_CAPS_pubpropertySystem_CAPS_staticIsErrorRedirected

Obtient une valeur qui indique si le flux de sortie d'erreur a été redirigé à partir du flux d'erreur standard.

System_CAPS_pubpropertySystem_CAPS_staticIsInputRedirected

Obtient une valeur qui indique si l'entrée a été redirigée à partir du flux d'entrée standard.

System_CAPS_pubpropertySystem_CAPS_staticIsOutputRedirected

Obtient une valeur qui indique si la sortie a été redirigée à partir du flux de sortie standard.

System_CAPS_pubpropertySystem_CAPS_staticKeyAvailable

Obtient une valeur indiquant si l'appui sur une touche est disponible dans le flux d'entrée.

System_CAPS_pubpropertySystem_CAPS_staticLargestWindowHeight

Obtient le plus grand nombre possible de lignes de fenêtre de console, selon la police et la résolution d’écran actuelles.

System_CAPS_pubpropertySystem_CAPS_staticLargestWindowWidth

Obtient le plus grand nombre possible de colonnes de fenêtre de console, selon la police et la résolution d’écran actuelles.

System_CAPS_pubpropertySystem_CAPS_staticNumberLock

Obtient une valeur indiquant si la bascule de la touche VERR. NUM est activée ou désactivée.

System_CAPS_pubpropertySystem_CAPS_staticOut

Obtient le flux de sortie standard.

System_CAPS_pubpropertySystem_CAPS_staticOutputEncoding

Obtient ou définit l'encodage que la console utilise pour écrire la sortie.

System_CAPS_pubpropertySystem_CAPS_staticTitle

Obtient ou définit le titre à afficher dans la barre de titre de la console.

System_CAPS_pubpropertySystem_CAPS_staticTreatControlCAsInput

Obtient ou définit une valeur qui indique si la combinaison de la touche de modification Control et de la touche de console (Ctrl+C) C est traitée comme une entrée ordinaire ou comme une interruption gérée par le système d'exploitation.

System_CAPS_pubpropertySystem_CAPS_staticWindowHeight

Obtient ou définit la hauteur de la zone de la fenêtre de console.

System_CAPS_pubpropertySystem_CAPS_staticWindowLeft

Obtient ou définit la position la plus à gauche de la zone de la fenêtre de console par rapport à la mémoire tampon d'écran.

System_CAPS_pubpropertySystem_CAPS_staticWindowTop

Obtient ou définit la position supérieure de la zone de la fenêtre de console par rapport à la mémoire tampon d'écran.

System_CAPS_pubpropertySystem_CAPS_staticWindowWidth

Obtient ou définit la largeur de la fenêtre de console.

NomDescription
System_CAPS_pubmethodSystem_CAPS_staticBeep()

Lit le son d'un signal sonore via le haut-parleur de la console.

System_CAPS_pubmethodSystem_CAPS_staticBeep(Int32, Int32)

Lit le son d'un signal sonore à la fréquence et pendant la durée spécifiées, via le haut-parleur de la console.

System_CAPS_pubmethodSystem_CAPS_staticClear()

Efface la mémoire tampon et la fenêtre correspondante de la console contenant les informations d'affichage.

System_CAPS_pubmethodSystem_CAPS_staticMoveBufferArea(Int32, Int32, Int32, Int32, Int32, Int32)

Copie une zone source spécifiée de la mémoire tampon d'écran dans une zone de destination spécifiée.

System_CAPS_pubmethodSystem_CAPS_staticMoveBufferArea(Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor)

Copie une zone source spécifiée de la mémoire tampon d'écran dans une zone de destination spécifiée.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardError()

Acquiert le flux d'erreur standard.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardError(Int32)

Acquiert le flux d'erreur standard, défini sur une taille de mémoire tampon spécifiée.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardInput()

Acquiert le flux d'entrée standard.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardInput(Int32)

Acquiert le flux d'entrée standard, défini sur une taille de mémoire tampon spécifiée.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardOutput()

Acquiert le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticOpenStandardOutput(Int32)

Acquiert le flux de sortie standard, défini sur une taille de mémoire tampon spécifiée.

System_CAPS_pubmethodSystem_CAPS_staticRead()

Lit le caractère suivant du flux d'entrée standard.

System_CAPS_pubmethodSystem_CAPS_staticReadKey()

Obtient le caractère suivant ou la touche de fonction sur laquelle l'utilisateur a appuyé. La touche enfoncée s'affiche dans la fenêtre de console.

System_CAPS_pubmethodSystem_CAPS_staticReadKey(Boolean)

Obtient le caractère suivant ou la touche de fonction sur laquelle l'utilisateur a appuyé. La touche enfoncée s'affiche éventuellement dans la fenêtre de console.

System_CAPS_pubmethodSystem_CAPS_staticReadLine()

Lit la ligne de caractères suivante du flux d'entrée standard.

System_CAPS_pubmethodSystem_CAPS_staticResetColor()

Définit les couleurs de premier plan et d'arrière-plan de la console sur leurs valeurs par défaut.

System_CAPS_pubmethodSystem_CAPS_staticSetBufferSize(Int32, Int32)

Définit la hauteur et la largeur de la zone de mémoire tampon d'écran sur les valeurs spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticSetCursorPosition(Int32, Int32)

Définit la position du curseur.

System_CAPS_pubmethodSystem_CAPS_staticSetError(TextWriter)

Définit la propriété Error avec l'objet TextWriter spécifié.

System_CAPS_pubmethodSystem_CAPS_staticSetIn(TextReader)

Définit la propriété In avec l'objet TextReader spécifié.

System_CAPS_pubmethodSystem_CAPS_staticSetOut(TextWriter)

Définit la propriété Out avec l'objet TextWriter spécifié.

System_CAPS_pubmethodSystem_CAPS_staticSetWindowPosition(Int32, Int32)

Définit la position de la fenêtre de console par rapport à la mémoire tampon d'écran.

System_CAPS_pubmethodSystem_CAPS_staticSetWindowSize(Int32, Int32)

Définit la hauteur et la largeur de la fenêtre de console sur les valeurs spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Boolean)

Écrit la représentation textuelle de la valeur booléenne spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Char)

Écrit la valeur du caractère Unicode spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Char[])

Écrit le tableau de caractères Unicode spécifié dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Char[], Int32, Int32)

Écrit le sous-tableau de caractères Unicode spécifié dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Decimal)

Écrit la représentation textuelle de la valeur Decimal spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Double)

Écrit la représentation textuelle de la valeur à virgule flottante double précision spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Int32)

Écrit la représentation textuelle de la valeur entière signée 32 bits spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Int64)

Écrit la représentation textuelle de la valeur entière signée 64 bits spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Object)

Écrit la représentation textuelle de l'objet spécifié dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(Single)

Écrit la représentation textuelle de la valeur à virgule flottante simple précision spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String)

Écrit la valeur de chaîne spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String, Object)

Écrit la représentation textuelle de l'objet spécifié dans le flux de sortie standard à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String, Object, Object)

Écrit la représentation textuelle des objets spécifiés dans le flux de sortie standard à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String, Object, Object, Object)

Écrit la représentation textuelle des objets spécifiés dans le flux de sortie standard à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String, Object, Object, Object, Object)

Écrit la représentation textuelle des objets spécifiés et la liste des paramètres de longueur variable dans le flux de sortie standard à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(String, Object[])

Écrit la représentation textuelle du tableau d'objets spécifiés dans le flux de sortie standard à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWrite(UInt32)

Écrit la représentation textuelle de la valeur entière non signée 32 bits spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWrite(UInt64)

Écrit la représentation textuelle de la valeur entière non signée 64 bits spécifiée dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine()

Écrit le terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Boolean)

Écrit la représentation textuelle de la valeur booléenne spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Char)

Écrit la valeur du caractère Unicode spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Char[])

Écrit le tableau de caractères Unicode spécifié suivi du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Char[], Int32, Int32)

Écrit le sous-tableau de caractères Unicode spécifié suivi du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Decimal)

Écrit la représentation textuelle de la valeur Decimal spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Double)

Écrit la représentation textuelle de la valeur à virgule flottante double précision spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Int32)

Écrit la représentation textuelle de la valeur entière signée 32 bits spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Int64)

Écrit la représentation textuelle de la valeur entière signée 64 bits spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Object)

Écrit la représentation textuelle de l'objet spécifié suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(Single)

Écrit la représentation textuelle de la valeur à virgule flottante simple précision spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String)

Écrit la valeur de chaîne spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String, Object)

Écrit la représentation textuelle de l'objet spécifié suivie du terminateur de la ligne active dans le flux de sortie standard, à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String, Object, Object)

Écrit la représentation textuelle des objets spécifiés suivie du terminateur de la ligne active dans le flux de sortie standard, à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String, Object, Object, Object)

Écrit la représentation textuelle des objets spécifiés suivie du terminateur de la ligne active dans le flux de sortie standard, à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String, Object, Object, Object, Object)

Écrit la représentation textuelle des objets spécifiés et la liste des paramètres de longueur variable suivies du terminateur de la ligne active dans le flux de sortie standard, à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(String, Object[])

Écrit la représentation textuelle du tableau d'objets spécifié suivie du terminateur de la ligne active dans le flux de sortie standard, à l'aide des informations de mise en forme spécifiées.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(UInt32)

Écrit la représentation textuelle de la valeur entière non signée 32 bits spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

System_CAPS_pubmethodSystem_CAPS_staticWriteLine(UInt64)

Écrit la représentation textuelle de la valeur entière non signée 64 bits spécifiée suivie du terminateur de la ligne active dans le flux de sortie standard.

NomDescription
System_CAPS_pubeventSystem_CAPS_staticCancelKeyPress

Se produit quand la touche de modification (Ctrl) Control et la touche de console (C) ConsoleKey.C ou la touche d'arrêt sont utilisées simultanément (Ctrl+C ou Ctrl+Pause).

System_CAPS_noteRemarque

Pour afficher le code source de .NET Framework pour ce type, consultez la Reference Source. Vous pouvez parcourir le code source en ligne, télécharger la référence de consultation hors connexion et parcourir les sources (y compris les correctifs et mises à jour) pendant le débogage ; see instructions.

La console est une fenêtre de système d’exploitation où les utilisateurs interagissent avec le système d’exploitation ou une application de console basée sur le texte en entrant l’entrée de texte via le clavier de l’ordinateur et en lisant la sortie de texte à partir de l’ordinateur terminal. Par exemple, dans le système d’exploitation Windows, la console est appelée à la fenêtre d’invite de commandes et accepte les commandes MS-DOS. La Console classe fournit un support de base pour les applications qui lisent et écrivent des caractères dans la console.

Pour plus d’informations sur le développement avec le Console de classe, consultez les sections suivantes :

Lorsqu’une application de console démarre, le système d’exploitation associe automatiquement trois flux d’e/s à la console : standard d’entrée de flux, les flux de sortie standard et les flux de sortie d’erreur standard. Votre application peut lire l’entrée d’utilisateur à partir du flux d’entrée standard ; écrire des données normales dans le flux de sortie standard ; et écrire des données de l’erreur dans le flux de sortie d’erreur standard. Ces flux sont présentés à votre application en tant que les valeurs de la Console.In, Console.Out, et Console.Error propriétés.

Par défaut, la valeur de la In propriété est un System.IO.TextReader objet qui représente le clavier et les valeurs de la Out et Error propriétés sont System.IO.TextWriter objets qui représentent une fenêtre de console. Toutefois, vous pouvez définir ces propriétés dans des flux qui ne représentent pas la fenêtre de console ou le clavier ; par exemple, vous pouvez définir ces propriétés dans les flux qui représentent des fichiers. Pour rediriger l’entrée standard, la sortie standard ou le flux d’erreur standard, appelez le Console.SetIn, Console.SetOut, ou Console.SetError (méthode), respectivement. Les opérations d’e/s qui utilisent ces flux sont synchronisées, ce qui signifie que plusieurs threads peuvent lire ou écrire dans le flux de données. Cela signifie que les méthodes qui sont habituellement asynchrones, telles que TextReader.ReadLineAsync, s’exécutent de façon synchrone, si l’objet représente un flux de la console.

System_CAPS_noteRemarque

N’utilisez pas la Console classe pour afficher la sortie dans les applications sans assistance, telles que les applications de serveur. Appels aux méthodes telles que Console.Write et Console.WriteLine n’ont aucun effet dans les applications d’interface utilisateur graphique.

Consolemembres de classe qui fonctionnent normalement lorsque le flux sous-jacent est dirigé vers une console peuvent lever une exception si le flux est redirigé, par exemple, dans un fichier. Votre application pour intercepter System.IO.IOException exceptions si vous redirigez un flux standard. Vous pouvez également utiliser le IsOutputRedirected, IsInputRedirected, et IsErrorRedirected propriétés afin de déterminer si un flux de données standard est redirigée avant d’effectuer une opération qui lève une System.IO.IOException exception.

Il est parfois utile d’appeler explicitement les membres des objets de flux de données représentés par la In, Out, et Error propriétés. Par exemple, par défaut, le Console.ReadLine méthode lit l’entrée à partir du flux d’entrée standard. De même, la Console.WriteLine méthode écrit des données dans le flux de sortie standard et les données sont suivies de la chaîne de terminaison de ligne par défaut, c'est-à-dire un retour chariot et saut de ligne (« \r\n »). Toutefois, la Console classe ne fournit pas de méthode correspondante pour écrire des données dans le flux de sortie d’erreur standard, ou une propriété pour modifier la chaîne de terminaison de ligne des données écrites dans ce flux de données.

Vous pouvez résoudre ce problème en définissant le TextWriter.NewLine propriété de la Out ou Error propriété à une autre chaîne de terminaison de ligne. Par exemple, l’instruction c# suivante définit la chaîne de terminaison de ligne pour le flux de sortie d’erreur standard à deux retour chariot et les séquences de saut de ligne :

Console.Error.NewLine = "\r\n\r\n";

Vous pouvez ensuite appeler explicitement la WriteLine méthode de l’objet erreur de flux de sortie, comme dans l’instruction c# suivante :

Console.Error.WriteLine();

Deux fonctionnalités étroitement liées de la console sont la mémoire tampon d’écran et la fenêtre de console. Texte est réellement lues ou écrite dans les flux appartenant à la console, mais semble être lues ou écrites dans une zone détenue par la console de la mémoire tampon d’écran. La mémoire tampon d’écran est un attribut de la console et organisée dans une grille rectangulaire de lignes et colonnes où chaque intersection de la grille ou une cellule de caractère, peut contenir un caractère. Chaque caractère possède sa propre couleur de premier plan et chaque cellule de caractère possède sa propre couleur d’arrière-plan.

La mémoire tampon d’écran est affichée via une zone rectangulaire appelée fenêtre de console. La fenêtre de console est un autre attribut de la console ; Il n’est pas la console, qui est une fenêtre de système d’exploitation. La fenêtre de console est organisée en lignes et colonnes est inférieur ou égal à la taille de la mémoire tampon d’écran et peut être déplacée pour afficher les différentes zones de la mémoire tampon d’écran sous-jacent. Si la mémoire tampon d’écran est supérieure à la fenêtre de console, la console affiche automatiquement les barres de défilement pour la fenêtre de console peut être repositionnée sur la zone de mémoire tampon d’écran.

Un curseur indique la position de mémoire tampon écran où texte est actuellement lue ou écrite. Le curseur peut être masqué ou visibles, et sa hauteur peut être modifiée. Si le curseur est visible, la position de la fenêtre de console est déplacée automatiquement pour le curseur se trouve toujours dans la vue.

L’origine des coordonnées de cellule de caractère dans la mémoire tampon d’écran est l’angle supérieur gauche, et les positions du curseur et de la fenêtre de console sont mesurées par rapport à cette origine. Index de base zéro permet de spécifier les positions ; Autrement dit, spécifiez la ligne supérieure comme ligne 0 et la colonne la plus à gauche en tant que colonne 0. La valeur maximale pour les index de ligne et de colonne est Int16.MaxValue.

En règle générale, la console lit l’entrée et écrit la sortie à l’aide de la page de codes de console en cours, ce qui définit des paramètres régionaux du système par défaut. Une page de codes peut gérer uniquement un sous-ensemble des caractères Unicode disponible, donc si vous tentez d’afficher les caractères qui ne sont pas mappées à une page de codes spécifique, la console ne pourra plus être afficher tous les caractères ou les représenter précisément. L'exemple de code suivant illustre ce problème. Il essaie d’afficher les caractères de l’alphabet cyrillique de U + 0410 à U + 044F dans la console. Si vous exécutez l’exemple sur un système qui utilise la page de codes 437, chaque caractère est remplacé par un point d’interrogation ( ?), étant donné que les caractères cyrilliques ne correspondent pas aux caractères dans la page de codes 437.

using System;

public class Example
{
   public static void Main()
   {
      // Create a Char array for the modern Cyrillic alphabet, 
      // from U+0410 to U+044F.
      int nChars = 0x044F - 0x0410 + 1;
      char[] chars = new char[nChars];
      ushort codePoint = 0x0410;
      for (int ctr = 0; ctr < chars.Length; ctr++) {
        chars[ctr] = Convert.ToChar(codePoint);
        codePoint++;
      }   

      Console.WriteLine("Current code page: {0}\n", 
                        Console.OutputEncoding.CodePage);
      // Display the characters.
      foreach (var ch in chars) {
         Console.Write("{0}  ", ch);
         if (Console.CursorLeft >= 70) 
            Console.WriteLine();
      }
   }
}
// The example displays the following output:
//    Current code page: 437
//    
//    ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?
//    ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?
//    ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?

Prise en charge des pages de codes, les Console classe prend en charge le codage UTF-8 la UTF8Encoding classe. À partir de .NET Framework 4.5, le Console classe prend également en charge le codage UTF-16 le UnicodeEncoding classe. Pour afficher les caractères Unicode dans la console. vous définissez la OutputEncoding propriété UTF8Encoding ou UnicodeEncoding.

Prise en charge des caractères Unicode requiert l’encodeur de reconnaître un caractère Unicode particulier, ainsi qu’une police qui a les glyphes nécessaires au rendu de ce caractère. Pour afficher correctement les caractères Unicode dans la console, la police de la console doit être définie à une non-raster ou une police TrueType comme Consolas ou Lucida Console. L’exemple suivant montre comment vous pouvez modifier par programmation la police à partir d’une police raster Lucida Console.

using System;
using System.Runtime.InteropServices;

public class Example
{
   [DllImport("kernel32.dll", SetLastError = true)]
   static extern IntPtr GetStdHandle(int nStdHandle);

   [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
   static extern bool GetCurrentConsoleFontEx(
          IntPtr consoleOutput, 
          bool maximumWindow,
          ref CONSOLE_FONT_INFO_EX lpConsoleCurrentFontEx);

   [DllImport("kernel32.dll", SetLastError = true)]
   static extern bool SetCurrentConsoleFontEx(
          IntPtr consoleOutput, 
          bool maximumWindow,
          CONSOLE_FONT_INFO_EX consoleCurrentFontEx);

   private const int STD_OUTPUT_HANDLE = -11;
   private const int TMPF_TRUETYPE = 4;
   private const int LF_FACESIZE = 32;
   private static IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);

   public static unsafe void Main()
   {
      string fontName = "Lucida Console";
      IntPtr hnd = GetStdHandle(STD_OUTPUT_HANDLE);
      if (hnd != INVALID_HANDLE_VALUE) {
         CONSOLE_FONT_INFO_EX info = new CONSOLE_FONT_INFO_EX();
         info.cbSize = (uint) Marshal.SizeOf(info);
         bool tt = false;
         // First determine whether there's already a TrueType font.
         if (GetCurrentConsoleFontEx(hnd, false, ref info)) {
            tt = (info.FontFamily & TMPF_TRUETYPE) == TMPF_TRUETYPE;
            if (tt) {
               Console.WriteLine("The console already is using a TrueType font.");
               return;
            }
            // Set console font to Lucida Console.
            CONSOLE_FONT_INFO_EX newInfo = new CONSOLE_FONT_INFO_EX();
            newInfo.cbSize = (uint) Marshal.SizeOf(newInfo);          
            newInfo.FontFamily = TMPF_TRUETYPE;
            IntPtr ptr = new IntPtr(newInfo.FaceName);
            Marshal.Copy(fontName.ToCharArray(), 0, ptr, fontName.Length);
            // Get some settings from current font.
            newInfo.dwFontSize = new COORD(info.dwFontSize.X, info.dwFontSize.Y);
            newInfo.FontWeight = info.FontWeight;
            SetCurrentConsoleFontEx(hnd, false, newInfo);
         }
      }    
    }

   [StructLayout(LayoutKind.Sequential)]
   internal struct COORD
   {
      internal short X;
      internal short Y;

      internal COORD(short x, short y)
      {
         X = x;
         Y = y;
      }
   }

   [StructLayout(LayoutKind.Sequential)]
   internal unsafe struct CONSOLE_FONT_INFO_EX 
   {
      internal uint cbSize;
      internal uint nFont;
      internal COORD dwFontSize;
      internal int FontFamily;
      internal int FontWeight;
      internal fixed char FaceName[LF_FACESIZE];
   } 
}

Toutefois, les polices TrueType peuvent afficher uniquement un sous-ensemble de glyphes. Par exemple, la police Lucida Console affiche uniquement les 643 64 000 caractères disponible à partir de U + 0021 à U + FB02. Pour voir une police particulière de caractères qui prend en charge, ouvrez le polices applet du Panneau de configuration, choisissez la rechercher un caractère option et choisir la police des jeux de caractère dont vous souhaitez examiner dans le police liste de la table des caractères fenêtre.

Windows utilise la liaison de polices pour afficher des glyphes qui ne sont pas disponibles dans une police particulière. Pour plus d’informations sur la police de liaison pour afficher les jeux de caractères supplémentaires, consultez Globalization Step-by-Step: Fonts. Polices liés sont définis dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink du Registre. Chaque écriture associée à cette sous-clé correspond au nom d’une police de base, et sa valeur est un tableau de chaînes qui définit les fichiers de polices et les polices qui sont liées à la police de base. Chaque membre du tableau définit une police liée et prend la forme nom de fichier de police,-nom de la police. L’exemple suivant illustre comment vous pouvez définir par programme une police liée nommée SimSun trouvé dans un fichier de polices nommé simsun.ttc qui affiche les caractères simplifié de Han.

using Microsoft.Win32;
using System;

public class Example
{
   public static void Main()
   {
      string valueName = "Lucida Console";
      string newFont = "simsun.ttc,SimSun";
      string[] fonts = null;
      RegistryValueKind kind = 0; 
      bool toAdd;

      RegistryKey key = Registry.LocalMachine.OpenSubKey( 
                 @"Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink", 
                 true);
      if (key == null) {
         Console.WriteLine("Font linking is not enabled.");
      }
      else {
         // Determine if the font is a base font.
         string[] names = key.GetValueNames();
         if (Array.Exists(names, s => s.Equals(valueName, 
                                      StringComparison.OrdinalIgnoreCase))) {
            // Get the value's type.
            kind = key.GetValueKind(valueName);

            // Type should be RegistryValueKind.MultiString, but we can't be sure.
            switch (kind) {
               case RegistryValueKind.String:
                  fonts = new string[] { (string) key.GetValue(valueName) };
                  break;   
               case RegistryValueKind.MultiString:
                  fonts = (string[]) key.GetValue(valueName);
                  break;
               case RegistryValueKind.None:
                  // Do nothing.
                  fonts = new string[] { };
                  break;
            } 
            // Determine whether SimSun is a linked font.
            if (Array.FindIndex(fonts, s =>s.IndexOf("SimSun", 
                                       StringComparison.OrdinalIgnoreCase) >=0) >= 0) {
               Console.WriteLine("Font is already linked.");
               toAdd = false;
            }
            else {
               // Font is not a linked font.
               toAdd = true;
            }
         }
         else {
            // Font is not a base font.
            toAdd = true;
            fonts = new string[] { };
         }

         if (toAdd) {  
            Array.Resize(ref fonts, fonts.Length + 1);
            fonts[fonts.GetUpperBound(0)] = newFont;
            // Change REG_SZ to REG_MULTI_SZ.
            if (kind == RegistryValueKind.String)
               key.DeleteValue(valueName, false);

            key.SetValue(valueName, fonts, RegistryValueKind.MultiString);
            Console.WriteLine("SimSun added to the list of linked fonts.");
         }                     
      }

      if (key != null) key.Close();
   }
}

Prise en charge Unicode pour la console présente les limitations suivantes :

  • Encodage UTF-32 n’est pas pris en charge. La seule prise en charge d’Unicode UTF-8 et UTF-16, qui sont représentées par les encodages sont la UTF8Encoding et UnicodeEncoding des classes, respectivement.

  • Sortie de bidirectionnelle n’est pas pris en charge.

  • Affichage des caractères en dehors du Basic Multilingual Plane (autrement dit, des paires de substitution) n’est pas compatible, même si elles sont définies dans un fichier de polices lié.

  • Affichage des caractères dans les scripts complexes n’est pas pris en charge.

  • Combinaison des séquences de caractères (autrement dit, les caractères qui se composent d’un caractère de base et un ou plusieurs caractères de non-espacement) sont affichés en tant que caractères distincts. Pour contourner cette limitation, vous pouvez normaliser la chaîne à afficher en appelant le String.Normalize méthode avant d’envoyer la sortie à la console. Dans l’exemple suivant, une chaîne qui contient le caractère de la combinaison de séquence de U + 0061 U + 0308 s’affiche sur la console comme deux caractères avant la chaîne de sortie est normalisée et comme un seul caractère après le String.Normalize méthode est appelée.

    using System;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          char[] chars = { '\u0061', '\u0308' };
    
          string combining = new String(chars);
          Console.WriteLine(combining);
    
          combining = combining.Normalize();
          Console.WriteLine(combining);
       }
    }
    // The example displays the following output:
    //       a"
    //       ä
    

    Notez que la normalisation est une solution viable uniquement si la séquence de caractères Unicode standard pour le caractère inclut un formulaire préalable composé qui correspond à un particulier combining.

  • Si une police fournit un glyphe pour un point de code dans la zone d’utilisation privée, ce glyphe s’affichera. Toutefois, étant donné que les caractères de la zone d’utilisation privée sont spécifiques à l’application, cela peut être pas le glyphe attendu.

L’exemple suivant affiche une plage de caractères Unicode dans la console. L’exemple accepte trois paramètres de ligne de commande : le début de la plage à afficher, à la fin de la plage à afficher et s’il faut utiliser l’encodage de console en cours (false) ou de l’encodage UTF-16 (true). Il suppose que la console utilise une police TrueType.

using System;
using System.IO;
using System.Globalization;
using System.Text;

public static class DisplayChars
{
   private static void Main(string[] args)
   {
      uint rangeStart = 0;
      uint rangeEnd = 0;
      bool setOutputEncodingToUnicode = true;
      // Get the current encoding so we can restore it.
      Encoding originalOutputEncoding = Console.OutputEncoding;

   	try
   	{
         switch(args.Length)
         {
            case 2:
               rangeStart = uint.Parse(args[0], NumberStyles.HexNumber);
               rangeEnd = uint.Parse(args[1], NumberStyles.HexNumber);
               setOutputEncodingToUnicode = true;
               break;
            case 3:
               if (! uint.TryParse(args[0], NumberStyles.HexNumber, null, out rangeStart))
                  throw new ArgumentException(String.Format("{0} is not a valid hexadecimal number.", args[0]));

               if (!uint.TryParse(args[1], NumberStyles.HexNumber, null, out rangeEnd))
                  throw new ArgumentException(String.Format("{0} is not a valid hexadecimal number.", args[1]));

               bool.TryParse(args[2], out setOutputEncodingToUnicode);
               break;
            default:
               Console.WriteLine("Usage: {0} <{1}> <{2}> [{3}]", 
                                 Environment.GetCommandLineArgs()[0], 
                                 "startingCodePointInHex", 
                                 "endingCodePointInHex", 
                                 "<setOutputEncodingToUnicode?{true|false, default:false}>");
               return;
         }

         if (setOutputEncodingToUnicode) {
            // This won't work before .NET Framework 4.5.
            try {
               // Set encoding using endianness of this system.
               // We're interested in displaying individual Char objects, so 
               // we don't want a Unicode BOM or exceptions to be thrown on
               // invalid Char values.
               Console.OutputEncoding = new UnicodeEncoding(! BitConverter.IsLittleEndian, false); 
               Console.WriteLine("\nOutput encoding set to UTF-16");
            }
            catch (IOException) {
               Console.OutputEncoding = new UTF8Encoding();
               Console.WriteLine("Output encoding set to UTF-8");
            }
         }
         else {
            Console.WriteLine("The console encoding is {0} (code page {1})", 
                              Console.OutputEncoding.EncodingName,
                              Console.OutputEncoding.CodePage);
         }
         DisplayRange(rangeStart, rangeEnd);
      }
      catch (ArgumentException ex) {
         Console.WriteLine(ex.Message);
      }
      finally {
         // Restore console environment.
         Console.OutputEncoding = originalOutputEncoding;
      }
   }

   public static void DisplayRange(uint start, uint end)
   {
      const uint upperRange = 0x10FFFF;
      const uint surrogateStart = 0xD800;
      const uint surrogateEnd = 0xDFFF;

      if (end <= start) {
         uint t = start;
         start = end;
         end = t;
      }

      // Check whether the start or end range is outside of last plane.
      if (start > upperRange)
         throw new ArgumentException(String.Format("0x{0:X5} is outside the upper range of Unicode code points (0x{1:X5})",
                                                   start, upperRange));                                   
      if (end > upperRange)
         throw new ArgumentException(String.Format("0x{0:X5} is outside the upper range of Unicode code points (0x{0:X5})",
                                                   end, upperRange));

      // Since we're using 21-bit code points, we can't use U+D800 to U+DFFF.
      if ((start < surrogateStart & end > surrogateStart) || (start >= surrogateStart & start <= surrogateEnd ))
         throw new ArgumentException(String.Format("0x{0:X5}-0x{1:X5} includes the surrogate pair range 0x{2:X5}-0x{3:X5}", 
                                                   start, end, surrogateStart, surrogateEnd));         
      uint last = RoundUpToMultipleOf(0x10, end);
      uint first = RoundDownToMultipleOf(0x10, start);

      uint rows = (last - first) / 0x10;

      for (uint r = 0; r < rows; ++r) {
         // Display the row header.
         Console.Write("{0:x5} ", first + 0x10 * r);

         for (uint c = 0; c < 0x10; ++c) {
            uint cur = (first + 0x10 * r + c);
            if (cur  < start) {
               Console.Write(" {0} ", Convert.ToChar(0x20));
            }
            else if (end < cur) {
               Console.Write(" {0} ", Convert.ToChar(0x20));
            }
            else {
               // the cast to int is safe, since we know that val <= upperRange.
               String chars = Char.ConvertFromUtf32( (int) cur);
               // Display a space for code points that are not valid characters.
               if (CharUnicodeInfo.GetUnicodeCategory(chars[0]) == 
                                               UnicodeCategory.OtherNotAssigned)
                  Console.Write(" {0} ", Convert.ToChar(0x20));
               // Display a space for code points in the private use area.
               else if (CharUnicodeInfo.GetUnicodeCategory(chars[0]) ==
                                              UnicodeCategory.PrivateUse)
                 Console.Write(" {0} ", Convert.ToChar(0x20));
               // Is surrogate pair a valid character?
               // Note that the console will interpret the high and low surrogate
               // as separate (and unrecognizable) characters.
               else if (chars.Length > 1 && CharUnicodeInfo.GetUnicodeCategory(chars, 0) == 
                                            UnicodeCategory.OtherNotAssigned)
                  Console.Write(" {0} ", Convert.ToChar(0x20));
               else
                  Console.Write(" {0} ", chars); 
            }

            switch (c) {
               case 3: case 11:
                  Console.Write("-");
                  break;
               case 7:
                  Console.Write("--");
                  break;
            }
         }

         Console.WriteLine();
         if (0 < r && r % 0x10 == 0)
            Console.WriteLine();
      }
   }

   private static uint RoundUpToMultipleOf(uint b, uint u)
   {
      return RoundDownToMultipleOf(b, u) + b;
   }

   private static uint RoundDownToMultipleOf(uint b, uint u)
   {
      return u - (u % b);
   }
}
// If the example is run with the command line
//       DisplayChars 0400 04FF true
// the example displays the Cyrillic character set as follows:
//       Output encoding set to UTF-16
//       00400  Ѐ  Ё  Ђ  Ѓ - Є  Ѕ  І  Ї -- Ј  Љ  Њ  Ћ - Ќ  Ѝ  Ў  Џ
//       00410  А  Б  В  Г - Д  Е  Ж  З -- И  Й  К  Л - М  Н  О  П
//       00420  Р  С  Т  У - Ф  Х  Ц  Ч -- Ш  Щ  Ъ  Ы - Ь  Э  Ю  Я
//       00430  а  б  в  г - д  е  ж  з -- и  й  к  л - м  н  о  п
//       00440  р  с  т  у - ф  х  ц  ч -- ш  щ  ъ  ы - ь  э  ю  я
//       00450  ѐ  ё  ђ  ѓ - є  ѕ  і  ї -- ј  љ  њ  ћ - ќ  ѝ  ў  џ
//       00460  Ѡ  ѡ  Ѣ  ѣ - Ѥ  ѥ  Ѧ  ѧ -- Ѩ  ѩ  Ѫ  ѫ - Ѭ  ѭ  Ѯ  ѯ
//       00470  Ѱ  ѱ  Ѳ  ѳ - Ѵ  ѵ  Ѷ  ѷ -- Ѹ  ѹ  Ѻ  ѻ - Ѽ  ѽ  Ѿ  ѿ
//       00480  Ҁ  ҁ  ҂  ҃ - ҄  ҅  ҆  ҇ -- ҈  ҉  Ҋ  ҋ - Ҍ  ҍ  Ҏ  ҏ
//       00490  Ґ  ґ  Ғ  ғ - Ҕ  ҕ  Җ  җ -- Ҙ  ҙ  Қ  қ - Ҝ  ҝ  Ҟ  ҟ
//       004a0  Ҡ  ҡ  Ң  ң - Ҥ  ҥ  Ҧ  ҧ -- Ҩ  ҩ  Ҫ  ҫ - Ҭ  ҭ  Ү  ү
//       004b0  Ұ  ұ  Ҳ  ҳ - Ҵ  ҵ  Ҷ  ҷ -- Ҹ  ҹ  Һ  һ - Ҽ  ҽ  Ҿ  ҿ
//       004c0  Ӏ  Ӂ  ӂ  Ӄ - ӄ  Ӆ  ӆ  Ӈ -- ӈ  Ӊ  ӊ  Ӌ - ӌ  Ӎ  ӎ  ӏ
//       004d0  Ӑ  ӑ  Ӓ  ӓ - Ӕ  ӕ  Ӗ  ӗ -- Ә  ә  Ӛ  ӛ - Ӝ  ӝ  Ӟ  ӟ
//       004e0  Ӡ  ӡ  Ӣ  ӣ - Ӥ  ӥ  Ӧ  ӧ -- Ө  ө  Ӫ  ӫ - Ӭ  ӭ  Ӯ  ӯ
//       004f0  Ӱ  ӱ  Ӳ  ӳ - Ӵ  ӵ  Ӷ  ӷ -- Ӹ  ӹ  Ӻ  ӻ - Ӽ  ӽ  Ӿ  ӿ

La Console classe contient les méthodes suivantes pour lire l’entrée de la console et l’écriture de la sortie de console :

  • Les surcharges de la ReadKey méthode lire un caractère individuel.

  • Le ReadLine méthode lit une ligne entière de l’entrée.

  • Le Write surcharges de méthode convertir une instance d’un type valeur, un tableau de caractères ou un ensemble d’objets en une chaîne formatée ou non et ensuite écrire cette chaîne dans la console.

  • Une représentation parallèle de jeu de WriteLine sortie de la même chaîne en tant que les surcharges de méthode le Write surcharges mais également ajouter une chaîne de terminaison de ligne.

La Console classe contient également des méthodes et propriétés pour effectuer les opérations suivantes :

  • Obtient ou définit la taille de la mémoire tampon d’écran. Le BufferHeight et BufferWidth propriétés vous permettent d’obtenir ou définir la mémoire tampon hauteur et largeur, respectivement et le SetBufferSize méthode vous permet de définir la taille de mémoire tampon dans un seul appel de méthode.

  • Obtient ou définit la taille de la fenêtre de console. Le WindowHeight et WindowWidth propriétés vous permettent d’obtenir ou définir respectivement, de la hauteur de la fenêtre et la largeur et la SetWindowSize méthode vous permet de définir la taille de fenêtre dans un seul appel de méthode.

  • Obtient ou définit la taille du curseur. Le CursorSize propriété spécifie la hauteur du curseur dans une cellule de caractère.

  • Obtient ou définit la position de la fenêtre de console par rapport à la mémoire tampon d’écran. Le WindowTop et WindowLeft propriétés vous permettent d’obtenir ou définir la première ligne et la colonne de gauche de la mémoire tampon d’écran qui s’affiche dans la fenêtre de console, et le SetWindowPosition méthode vous permet de définir ces valeurs dans un seul appel de méthode.

  • Obtient ou définit la position du curseur à obtenir ou définir le CursorTop et CursorLeft propriétés, ou un ensemble de la position du curseur en appelant le SetCursorPosition (méthode).

  • Déplacer ou effacer les données dans la mémoire tampon d’écran en appelant le MoveBufferArea ou Clear (méthode).

  • Obtenir ou définir les couleurs de premier plan et d’arrière-plan à l’aide de la ForegroundColor et BackgroundColor propriétés, ou de réinitialiser l’arrière-plan et premier plan pour les couleurs par défaut en appelant le ResetColor (méthode).

  • Lire le son d’un signal sonore via le haut-parleur de la console en appelant le Beep (méthode).

Dans le .NET Framework sur le bureau, le Console classe utilise l’encodage retourné par GetConsoleCP et GetConsoleOutputCP, qui en général, est une page de codes d’encodage. Par exemple le code, sur les systèmes dont la culture anglais (États-Unis), page de codes 437 est l’encodage utilisé par défaut. Toutefois, .NET Core peut effectuer uniquement un sous-ensemble de ces encodages disponibles. Dans ce cas, Encoding.UTF8 est utilisé comme le codage par défaut pour la console.

Si votre application dépend des codages de pages de code spécifique, vous pouvez toujours les rendre disponibles en procédant comme suit avant vous appeler les Console méthodes :

  1. Ajoutez une référence à l’assembly System.Text.Encoding.CodePages.dll à votre projet.

  2. Récupérer le EncodingProvider de l’objet à partir de la CodePagesEncodingProvider.Instance propriété.

  3. Passez le EncodingProvider de l’objet à la Encoding.RegisterProvider méthode pour rendre les encodages supplémentaires pris en charge par le fournisseur d’encodage disponible.

Le Console classe puis utiliseront automatiquement le codage du système par défaut plutôt que UTF8, sous réserve que vous avez enregistré le fournisseur d’encodage avant d’appeler une Console méthodes de sortie.

L’exemple suivant montre comment lire des données à partir d’et écrire des données, l’entrée standard et le flux de sortie. Notez que ces flux peut être redirigés à l’aide de la SetIn et SetOut méthodes.

using System;

public class Example {
    public static void Main() 
    {
        Console.Write("Hello ");
        Console.WriteLine("World!");
        Console.Write("Enter your name: ");
        String name = Console.ReadLine();
        Console.Write("Good day, ");
        Console.Write(name);
        Console.WriteLine("!");
    }
}
// The example displays output similar to the following:
//       Hello World!
//       Enter your name: James
//       Good day, James!

.NET Framework
Disponible depuis 1.1
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0

Ce type est thread-safe.

Retour au début
Afficher: