Console.Readkey und Console.Writeline Unterschied?
Was ist der Unterschied zwischen den Beiden bzw was machen sie?
3 Antworten
Primär ist der Unterschied zwischen beiden, dass ReadKey eine Eingabefunktion darstellt und WriteLine eine Ausgabefunktion ist.
Bei ReadKey wird zum Unterschied zu ReadLine nur ein Zeichen (Beliebige Taste) erfasst und bei ReadLine wird erst eingelesen, wenn der Benutzer auf Enter drückt.
WriteLine erwartet einen String oder keinen Parameter. Wenn kein String angegeben wird spuckt WriteLine einfach eine Leerzeile aus.
Es gibt auch noch Console.Write das den Cursor nicht in die nächste Zeile setzt.
Hier ein Projekt zum Üben und nachprogrammieren:
(Erstelle ein neues C# Consolenprojekt und nenne es Mitarbeiter)
using System;
using System.IO;
using System.Collections.Generic;
namespace Mitarbeiter
{
public class MitarbeiterIn
{
//Properties
public string Name { get; set; }
public string Adresse { get; set; }
public int Personalnummer { get; set; }
public int Alter { get; set; }
}
class Program
{
static void Main(string[] args)
{
string antwort = "";
string pfad = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Mitarbeiter.txt";
List<MitarbeiterIn> listOfMitarbeiterIn = new List<MitarbeiterIn>();
if (File.Exists(pfad))
{
using (StreamReader sr = File.OpenText(pfad))
{
string s = sr.ReadToEnd();
string[] Einlesen = s.Split('\n');
for (int i = 0; i < Einlesen.Length; i++)
{
string[] LeseListe = Einlesen[i].Split(';');
if (LeseListe.Length != 1)
{
MitarbeiterIn m1 = new MitarbeiterIn();
try
{
m1.Name = LeseListe[0];
m1.Adresse = LeseListe[1];
m1.Alter = Convert.ToInt32(LeseListe[2]);
m1.Personalnummer = Convert.ToInt32(LeseListe[3]);
listOfMitarbeiterIn.Add(m1);
}
catch
{
}
}
}
if (listOfMitarbeiterIn.Count == 1)
{
Console.WriteLine((listOfMitarbeiterIn.Count) + " Datensatz wurden geladen");
}
else
{
Console.WriteLine((listOfMitarbeiterIn.Count) + " Datensätze wurden geladen");
}
Console.WriteLine();
}
}
do
{
Console.WriteLine("1. Neue MitarbeiterIn hinzufügen / 2. MitarbeiterInnen anzeigen / 3. Datensatz Löschen / 4. Programm beenden");
antwort = Console.ReadLine();
if (antwort == "1")
{
MitarbeiterIn m1 = new MitarbeiterIn();
Console.WriteLine("Bitte geben Sie den oder die Mitatbeiterin ein!");
Console.WriteLine("Name:");
string s = Console.ReadLine();
m1.Name = s.Replace(';', ',');
Console.WriteLine("Adresse:");
s = Console.ReadLine();
m1.Adresse = s.Replace(';', ',');
Console.WriteLine("Alter:");
s = Console.ReadLine();
try
{
m1.Alter = Int32.Parse(s);
}
catch (FormatException e)
{
m1.Alter = 0;
}
Console.WriteLine("Personalnummer:");
s = Console.ReadLine();
try
{
m1.Personalnummer = Int32.Parse(s);
}
catch (FormatException e)
{
m1.Personalnummer = 0;
}
if (m1.Name != "" && m1.Adresse != "")
{
if (m1.Alter != 0 && m1.Personalnummer != 0)
{
Console.WriteLine("MitarbeiterIn wurde hinzugefügt.");
listOfMitarbeiterIn.Add(m1);
}
else
{
Console.WriteLine("Alter oder Personalnummer falsch!");
}
}
else
{
Console.WriteLine("Bitte geben Sie Name und Adresse ein!");
}
Console.WriteLine();
}
if (antwort == "2")
{
Console.WriteLine();
if (listOfMitarbeiterIn.Count != 0)
{
for (int i = 0; i < listOfMitarbeiterIn.Count; i++)
{
Console.WriteLine("Datensatznummer: " + (i+1));
Console.WriteLine("Name: " + listOfMitarbeiterIn[i].Name);
Console.WriteLine("Adresse: " + listOfMitarbeiterIn[i].Adresse);
Console.WriteLine("Alter: " + listOfMitarbeiterIn[i].Alter);
Console.WriteLine("Personalnummer: " + listOfMitarbeiterIn[i].Personalnummer);
Console.WriteLine();
}
}
else
{
Console.WriteLine("Keine Mitarbeiter gespeichert");
Console.WriteLine();
}
}
if (antwort == "3")
{
Console.WriteLine("Geben Sie die zu löschenden Datensatznummer ein:");
Console.WriteLine();
string Edit = Console.ReadLine();
try
{
int Number = Int32.Parse(Edit);
if (Number <= listOfMitarbeiterIn.Count && Number > 0)
{
Console.WriteLine("Datensatznummer: " + Number);
Console.WriteLine("Name: " + listOfMitarbeiterIn[Number - 1].Name);
Console.WriteLine("Adresse: " + listOfMitarbeiterIn[Number - 1].Adresse);
Console.WriteLine("Alter: " + listOfMitarbeiterIn[Number - 1].Alter);
Console.WriteLine("Personalnummer: " + listOfMitarbeiterIn[Number - 1].Personalnummer);
Console.WriteLine();
string editieren;
do
{
Console.WriteLine("Datensatz Löschen? (j/n)");
editieren = Console.ReadLine();
if (editieren == "j")
{
listOfMitarbeiterIn.Remove(listOfMitarbeiterIn[Number - 1]);
Console.WriteLine("Datensatz " + Number.ToString() + " wurde gelöscht!");
Console.WriteLine();
break;
}
} while (editieren != "n");
}
else
{
Console.WriteLine("Datensatz nicht gefunden.");
Console.WriteLine();
}
}
catch (FormatException e)
{
}
}
} while (antwort != "4");
Console.WriteLine("Programm wind beedet!");
Console.WriteLine();
do
{
Console.WriteLine("Änderungen speichern (j/n)?");
antwort = Console.ReadLine();
if (antwort == "j")
{
using (System.IO.StreamWriter Datei = new System.IO.StreamWriter(pfad))
{
for (int i = 0; i < listOfMitarbeiterIn.Count; i++)
{
Datei.WriteLine(listOfMitarbeiterIn[i].Name + ";" + listOfMitarbeiterIn[i].Adresse + ";" + listOfMitarbeiterIn[i].Alter.ToString() + ";" + listOfMitarbeiterIn[i].Personalnummer.ToString() );
}
}
}
if (antwort == "n")
{
break;
}
} while (antwort != "j");
//Console.ReadKey();
}
}
}
ReadKey
Ruft die nächste vom Benutzer gedrückte Zeichen- oder Funktionstaste ab.
WriteLine
Schreibt die angegebenen Daten, gefolgt vom aktuellen Zeichen für den Zeilenabschluss, in den Standardausgabestream.
Und was genau verstehst du daran nicht? Um es noch einfacher auszudrücken:
- readKey LIEST eine gedrückte Taste eie
- WriteLine gibt das Übergebene aus
WriteLine schreibt eine Zeile und ReadKey liest eine gedrückte Taste ein.
das eine macht read key (keyboard kennste aber , also ein TASTENBOARD ) das ander macht write line (zeile nicht linie)
Schön kopiert aber jetzt mal bitte einfacher und genauer erklärt😂