diff --git a/11 StructIntro/Program.cs b/11 StructIntro/Program.cs index a668d4b0db32a5a2471dfc809c380f8d3890f158..a51f19194bd9152a0672c3ba3192ff54cc3329aa 100644 --- a/11 StructIntro/Program.cs +++ b/11 StructIntro/Program.cs @@ -11,7 +11,7 @@ namespace _11_StructIntro public string ort ; public int plz; - // Konstruktoren: Initialisieren die struct. Allen Feldern der Struktur muss + // Konstruktoren: Initialisieren die struct. Allen Feldern der Struktur MUSS // ein Wert zugewiesen werden! // Es kann mehrere Konstruktoren (mit mehr oder weniger Parametern) geben public Person(string Name, string Vorname, int Alter, string Ort, int Plz) @@ -26,7 +26,9 @@ namespace _11_StructIntro { name = Name; vorname = Vorname; + alter = -1; + ort = ""; plz = -1; } @@ -45,6 +47,13 @@ namespace _11_StructIntro { Console.WriteLine($"{p.vorname} {p.name} -- Alter: {p.alter} {p.plz} {p.ort}"); } + + static void PersonErhoeheAlter(ref Person p) + { + p.alter++; + Console.WriteLine($"Alter: {p.alter}"); + // return p; + } static void Main(string[] args) { //anton.name = "Meier"; @@ -56,17 +65,23 @@ namespace _11_StructIntro Person anton = new Person("Meier","Anton",27,"Nürnberg",90489); PersonAusgeben(anton); - Person berta = anton; - anton.vorname = "Antonia"; + PersonErhoeheAlter(ref anton); // ACHTUNG: structs sind Wertetypen! + PersonAusgeben(anton); // d.h. es wird eine KOPIE von anton übergeben + // Für Veränderungen im struct ist eine ref-Übergabe erforderlich - PersonAusgeben(anton); - PersonAusgeben(berta); - Person claudia = new Person("Schneider", "Claudia"); - PersonAusgeben(claudia); - Console.WriteLine(claudia); - string s = claudia.ToString(); - // anton, berta, claudia sind WERTETYPEN, da structs + //Person berta = anton; + //anton.vorname = "Antonia"; + + //PersonAusgeben(anton); + //PersonAusgeben(berta); + + //Person claudia = new Person("Schneider", "Claudia"); + //PersonAusgeben(claudia); + //Console.WriteLine(claudia); + //string s = claudia.ToString(); + //// anton, berta, claudia sind WERTETYPEN, da structs + } } } diff --git a/11 StructsPublicPrivate/11 StructsPublicPrivate.csproj b/11 StructsPublicPrivate/11 StructsPublicPrivate.csproj new file mode 100644 index 0000000000000000000000000000000000000000..626b23b5a0f14679c9e6592c408d7da690799168 --- /dev/null +++ b/11 StructsPublicPrivate/11 StructsPublicPrivate.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_11_StructsPublicPrivate</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/11 StructsPublicPrivate/Program.cs b/11 StructsPublicPrivate/Program.cs new file mode 100644 index 0000000000000000000000000000000000000000..627b8d98b3c7cc2b91f176cf6c695fafbac6d7b3 --- /dev/null +++ b/11 StructsPublicPrivate/Program.cs @@ -0,0 +1,27 @@ +using System; + +namespace Space1 +{ + struct xyz { } + class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} + +namespace Space2 +{ + //using Space1; + class xxx + { + static void TueEtwas() + { + Space1.xyz yyy = new Space1.xyz(); + Space1.Program zzz = new Space1.Program(); + Space1.Program.Main(new string[] { "par1", "par2" }); + } + } +} diff --git a/11 ThrowIntro/11 ThrowIntro.csproj b/11 ThrowIntro/11 ThrowIntro.csproj new file mode 100644 index 0000000000000000000000000000000000000000..57fbb5cc5e22487899ba76238ac75a88e5dcceb9 --- /dev/null +++ b/11 ThrowIntro/11 ThrowIntro.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_11_ThrowIntro</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/11 ThrowIntro/Program.cs b/11 ThrowIntro/Program.cs new file mode 100644 index 0000000000000000000000000000000000000000..9f0e48f94db44faa138cc67f54189d49c6b92659 --- /dev/null +++ b/11 ThrowIntro/Program.cs @@ -0,0 +1,40 @@ +using System; + +namespace _11_ThrowIntro +{ + class Program + { + static void TueEtwas (int x) // x muss >= 0 sein + { + if (x >=0) + { + // nur dann mit dem x arbeiten ==> Fehlerzustand wird ignoriert + } + + //////////////////// + if (x < 0) + { + Console.WriteLine("Unzulässiger x Wert"); + /*return*/; + } + // nur dann mit dem x arbeiten ==> Fehlerzustand wird ignoriert + if (x < 0) + throw new ArgumentOutOfRangeException("Unzulässiger x Wert"); + } + + static void Main(string[] args) + { + try + { + TueEtwas(10); + TueEtwas(-1); // In diesem Funktionsaufruf wurde der Fehler geworfen + // Folge: try-Block wird abgebrochen + TueEtwas(11); + } + catch (Exception e) + { + Console.WriteLine($"Exception: {e.Message}"); + } + } + } +} diff --git a/11 Time/Program.cs b/11 Time/Program.cs index c3fbbaf121b077d836a9c6d66f720715ead7795b..c306ee3812aac5ec4051fa54b0c9398f8919fa5e 100644 --- a/11 Time/Program.cs +++ b/11 Time/Program.cs @@ -5,13 +5,18 @@ namespace _11_Time struct Time { public int time; - public Time(int stunden, int minuten) - { + public Time(int stunden, int minuten) // Konstruktoren haben keine Rückgabewerte + { // Konstruktoren sind nicht static time = 60 * stunden + minuten; } + public Time(string zeit) // "9:45" + { + string[] daten = zeit.Split(':'); + time = 60 * Convert.ToInt32(daten[0]) + Convert.ToInt32(daten[1]); + } public override string ToString() { - return base.ToString(); + return $"{time/60}:{time%60}"; } } class Program @@ -23,6 +28,8 @@ namespace _11_Time Time t1 = new Time(9, 45); Time t2 = new Time(11, 15); + Console.WriteLine(t1); + Console.WriteLine(TimeDifInMinutes(t2,t1)); } diff --git a/11 UebgKoordinaten/11 UebgKoordinaten.csproj b/11 UebgKoordinaten/11 UebgKoordinatenMo.csproj similarity index 100% rename from 11 UebgKoordinaten/11 UebgKoordinaten.csproj rename to 11 UebgKoordinaten/11 UebgKoordinatenMo.csproj diff --git a/11 UebgKoordinaten/Program.cs b/11 UebgKoordinaten/Program.cs index 0acd44d64fb14d7e487a7c57d4052bc343f08f6e..70b82969027c20b34a651798d7f85202ee9d690e 100644 --- a/11 UebgKoordinaten/Program.cs +++ b/11 UebgKoordinaten/Program.cs @@ -15,7 +15,7 @@ namespace _11_UebgKoordinaten x = X; y = Y; } - public override string ToString() => $"({x}|{y})"; + public override string ToString() => $"Koordinate: ({x}|{y})"; } class Program @@ -50,6 +50,16 @@ namespace _11_UebgKoordinaten Coord c3 = CoordMove(c1, 6, 5); // Werteübergabe von c1, aber return liefert Ergebnis zurück Console.WriteLine(c3); + + Console.WriteLine(c3.ToString()); + + Coord[] coords = new Coord[5]; + coords[0] = new Coord(1, 2); + coords[1] = new Coord(3, 3); + + coords[3] = coords[0]; // Structs sind Wertetypen! + coords[0].x = -999; // d.h. bei der Zuweisung wird eine KOPIE von coords[0] gespeichert + coords[0].y = -999; // bei Referenztypen (class) wird hingegen eine weitere Referenz gespeichert } } } diff --git a/11 UebgKoordinaten_Di/11 UebgKoordinaten_Di.csproj b/11 UebgKoordinaten_Di/11 UebgKoordinaten_Di.csproj new file mode 100644 index 0000000000000000000000000000000000000000..a8fbb526df51dd27449c991a01916e124426bb5a --- /dev/null +++ b/11 UebgKoordinaten_Di/11 UebgKoordinaten_Di.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_11_UebgKoordinaten_Di</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/11 UebgKoordinaten_Di/Program.cs b/11 UebgKoordinaten_Di/Program.cs new file mode 100644 index 0000000000000000000000000000000000000000..04ecf956aea9de2ee2fdd6f06cbc9356d88a4fa6 --- /dev/null +++ b/11 UebgKoordinaten_Di/Program.cs @@ -0,0 +1,22 @@ +using System; + +namespace _11_UebgKoordinaten_Di +{ + + // Erstellen Sie eine Struct Koordinate Coord(double x, double y) mit + // ToString() und Konstruktor(en) + // Erstellen Sie in Program eine Methode CoordDist(), welche den Abstand zwischen zwei Koordinaten bestimmt + // Erstellen Sie in Program eine Methode CoordMove(), welche die Koordinate um ein deltaX, deltaY verschiebt + + struct Coord + { + + } + class Program + { + static void Main(string[] args) + { + Console.WriteLine(); + } + } +} diff --git a/Prog1_WS2021_22.sln b/Prog1_WS2021_22.sln index c9f67d38a35d448185b8d5139752400c4b912a4a..5cfbffa9a8188b2b86c07281980fba6c9436519c 100644 --- a/Prog1_WS2021_22.sln +++ b/Prog1_WS2021_22.sln @@ -101,11 +101,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 StringSplit2", "10 Strin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 Enums", "10 Enums\10 Enums.csproj", "{0A59F1EF-68BD-43C7-BA85-EC1557017D86}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 StructIntro", "11 StructIntro\11 StructIntro.csproj", "{F8A06135-B753-408E-B569-D345AA694667}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "11 StructIntro", "11 StructIntro\11 StructIntro.csproj", "{F8A06135-B753-408E-B569-D345AA694667}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 UebgKoordinaten", "11 UebgKoordinaten\11 UebgKoordinaten.csproj", "{EAAD4537-6255-4C1B-8162-BD7C946F3065}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "11 UebgKoordinatenMo", "11 UebgKoordinaten\11 UebgKoordinatenMo.csproj", "{EAAD4537-6255-4C1B-8162-BD7C946F3065}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 Time", "11 Time\11 Time.csproj", "{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "11 Time", "11 Time\11 Time.csproj", "{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 UebgKoordinaten_Di", "11 UebgKoordinaten_Di\11 UebgKoordinaten_Di.csproj", "{B1C38CF7-98C6-4696-990E-E590C24BCA46}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 StructsPublicPrivate", "11 StructsPublicPrivate\11 StructsPublicPrivate.csproj", "{2A85F1F9-5C05-4905-BC7D-D9C836D10477}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 ThrowIntro", "11 ThrowIntro\11 ThrowIntro.csproj", "{055DDC53-EB6E-43B8-BED5-EC6BEDC87507}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -321,6 +327,18 @@ Global {A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Debug|Any CPU.Build.0 = Debug|Any CPU {A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Release|Any CPU.ActiveCfg = Release|Any CPU {A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Release|Any CPU.Build.0 = Release|Any CPU + {B1C38CF7-98C6-4696-990E-E590C24BCA46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1C38CF7-98C6-4696-990E-E590C24BCA46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1C38CF7-98C6-4696-990E-E590C24BCA46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1C38CF7-98C6-4696-990E-E590C24BCA46}.Release|Any CPU.Build.0 = Release|Any CPU + {2A85F1F9-5C05-4905-BC7D-D9C836D10477}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A85F1F9-5C05-4905-BC7D-D9C836D10477}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A85F1F9-5C05-4905-BC7D-D9C836D10477}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A85F1F9-5C05-4905-BC7D-D9C836D10477}.Release|Any CPU.Build.0 = Release|Any CPU + {055DDC53-EB6E-43B8-BED5-EC6BEDC87507}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {055DDC53-EB6E-43B8-BED5-EC6BEDC87507}.Debug|Any CPU.Build.0 = Debug|Any CPU + {055DDC53-EB6E-43B8-BED5-EC6BEDC87507}.Release|Any CPU.ActiveCfg = Release|Any CPU + {055DDC53-EB6E-43B8-BED5-EC6BEDC87507}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE