diff --git a/.vs/prog2-ss2022-wienkop/DesignTimeBuild/.dtbcache.v2 b/.vs/prog2-ss2022-wienkop/DesignTimeBuild/.dtbcache.v2
index 69ddbc9a5ab067d4c75f2e2b6620755ac60ebbc0..a1f9e0db2f1e0a894065144a04c7b760cb0297a3 100644
Binary files a/.vs/prog2-ss2022-wienkop/DesignTimeBuild/.dtbcache.v2 and b/.vs/prog2-ss2022-wienkop/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/.vs/prog2-ss2022-wienkop/v16/.suo b/.vs/prog2-ss2022-wienkop/v16/.suo
index 1827a8351b095887e3746e1efd985d892c4c6bd6..8648814a0fc2f0e5ff0aab6b9900ef243d0ecb50 100644
Binary files a/.vs/prog2-ss2022-wienkop/v16/.suo and b/.vs/prog2-ss2022-wienkop/v16/.suo differ
diff --git a/02 OperatorUeberladgBrueche/Bruch.cs b/02 OperatorUeberladgBrueche/Bruch.cs
index 4ecb68c87978d08e45b95b1c2cbf570a56390128..ec78a97508027d41ac1836231cd8402eff983e9a 100644
--- a/02 OperatorUeberladgBrueche/Bruch.cs	
+++ b/02 OperatorUeberladgBrueche/Bruch.cs	
@@ -20,7 +20,7 @@ namespace _02_OperatorUeberladgBrueche
         }
         public override string ToString() => $"{z}/{n}";
 
-        #region Operatoren
+        #region Binäre Operatoren
         public void Mult_V1(Bruch b2)
         {
             z = z * b2.z;
@@ -32,6 +32,7 @@ namespace _02_OperatorUeberladgBrueche
         }
         public Bruch Mult_V3(Bruch b2) => new Bruch(z * b2.z, n * b2.n);
         public static Bruch operator *(Bruch b1, Bruch b2) => new Bruch(b1.z * b2.z, b1.n * b2.n);
+        public static Bruch operator +(Bruch b1, Bruch b2) => new Bruch(b1.z * b2.n + b2.z * b1.n, b1.n * b2.n);
         //public static Bruch operator *(Bruch b1, int k) => new Bruch(b1.z * k, b1.n);
         //public static Bruch operator *(int k, Bruch b1) => new Bruch(b1.z * k, b1.n);
         #endregion
@@ -40,8 +41,41 @@ namespace _02_OperatorUeberladgBrueche
         public static implicit operator Bruch(int k) => new Bruch(k);
         // Konvertiert einen Int in einen Bruch
         public static explicit operator int(Bruch b) => b.z/b.n;
-        // Konvertiert einen Bruch in einen int
+        // Konvertiert einen Bruch in einen int. Da ein Genauigkeitsverlust
+        // möglich ist: explicit
         public static implicit operator Bruch(string s) => new Bruch(s);
         #endregion
+
+        #region Unäre Operatoren
+        public static Bruch operator +(Bruch b) => b;
+        public static Bruch operator -(Bruch b) => new Bruch(-b.z, b.n);
+
+        // x = 5; cw(x++)--> cw(x); x=x+1  ,  cw(++x) --> x=x+1;cw(x)
+        // b1++    3/2++  --> 5/2
+        // Compiler generiert selbstätig die entsprechende Codeanordnung
+        public static Bruch operator ++(Bruch b) => new Bruch(b.z + b.n, b.n);
+        public static Bruch operator --(Bruch b) => new Bruch(b.z - b.n, b.n);
+        #endregion
+
+        #region Vergleichsoperatoren
+        public static bool operator ==(Bruch b1, Bruch b2) => b1.z == b2.z && b1.n == b2.n;
+        public static bool operator !=(Bruch b1, Bruch b2) => !(b1 == b2);
+        public override bool Equals(object obj)
+        {
+            if (obj == null)
+                return false;
+            if (this.GetType() != obj.GetType())
+                return false;
+
+            return this == (Bruch)obj;
+        }
+        public override int GetHashCode()
+        {
+            return z.GetHashCode() ^ n.GetHashCode();
+        }
+
+        public static bool operator true(Bruch b) => b.n != 1;
+        public static bool operator false(Bruch b) => b.n == 1;
+        #endregion
     }
 }
diff --git a/02 OperatorUeberladgBrueche/Program.cs b/02 OperatorUeberladgBrueche/Program.cs
index 754c1c4f23f3cf247c8dc9f57842421c01b2c97f..e6c23398babd890f2834fee227eb37fddc4c0ea7 100644
--- a/02 OperatorUeberladgBrueche/Program.cs	
+++ b/02 OperatorUeberladgBrueche/Program.cs	
@@ -22,14 +22,27 @@ namespace _02_OperatorUeberladgBrueche
             Bruch b4 = b1 * b2;
             Console.WriteLine(b4);
 
-            Bruch b5 = b1 * 2;
+            Bruch b5 = b1 * 2 + b4 * 1;
             Bruch b6 = 2 * b1;
 
             double x = 3.14;
             int k4 = (int) x;
             k4 = (int) b6;
 
-            Bruch b8 = (Bruch) "3/4" * "1/2";
+            Bruch b8 = b1 * "1/2";
+            Bruch b9 = +b8;
+            Bruch b10 = -b8;
+
+            Bruch b11 = new Bruch(1, 2);    // Speicher: #100.000
+            Bruch b12 = new Bruch(1, 2);    // Speicher: #200.000
+
+            if (b11 == b12)
+                Console.WriteLine("Die Brüche sind gleich!");
+            else
+                Console.WriteLine("Die Brüche sind ungleich!");
+
+            if (b11)
+                Console.WriteLine("Der Bruch ist ein echter Bruch");
         }
     }
 }
diff --git a/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll b/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll
index 63aa879c4044ebec743ca234e1777b194807f926..8ae4cab72ae3410b175ed9d2670860428eb4c86a 100644
Binary files a/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll and b/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll differ
diff --git a/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb b/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb
index ffc4a3c3946ec2d5d679a96674d36ee6c477dfc9..b1ec2343b2a2bca4bab1a6bf00b8304020f6247c 100644
Binary files a/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb and b/02 OperatorUeberladgBrueche/bin/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb differ
diff --git a/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll b/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll
index 63aa879c4044ebec743ca234e1777b194807f926..8ae4cab72ae3410b175ed9d2670860428eb4c86a 100644
Binary files a/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll and b/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.dll differ
diff --git a/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb b/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb
index ffc4a3c3946ec2d5d679a96674d36ee6c477dfc9..b1ec2343b2a2bca4bab1a6bf00b8304020f6247c 100644
Binary files a/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb and b/02 OperatorUeberladgBrueche/obj/Debug/netcoreapp3.1/02 OperatorUeberladgBrueche.pdb differ