Entwickler-Ecke

C# - Die Sprache - Equals


Dingo - Di 21.03.17 12:02
Titel: Equals
Grüße!

Kleine Frage zu folgendem Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lektion1 {

    class Luftfahrzeug {
        protected string kennung;

        public Luftfahrzeug(string kennung) {
            this.kennung = kennung;
        }
    }

    class Uebung {
        public void ObjectMethoden() {
            Luftfahrzeug flieger1 = new Luftfahrzeug("LH 3000");
            Luftfahrzeug flieger2 = new Luftfahrzeug("LH 4000");
            Luftfahrzeug flieger3 = flieger1;
        }
    }

    class Program {
        static void Main(string[] args) {
            Uebung ue = new Uebung();
            ue.ObjectMethoden();
            Console.WriteLine("flieger1 gleich flieger2 ? {0}", flieger1.Equals(flieger2));
            Console.WriteLine("flieger1 gleich flieger3 ? {0}", flieger1.Equals(flieger3));
            Console.WriteLine(Object.Equals(flieger1, flieger2));
            Console.ReadLine();
        }
    }
}


Bei diesen drei Zeilen


C#-Quelltext
1:
2:
3:
            Console.WriteLine("flieger1 gleich flieger2 ? {0}", flieger1.Equals(flieger2));
            Console.WriteLine("flieger1 gleich flieger3 ? {0}", flieger1.Equals(flieger3));
            Console.WriteLine(Object.Equals(flieger1, flieger2));


Bekomme ich diese Fehler:

Der Name 'flieger3' ist im aktuellen Kontext nicht vorhanden.
Der Name 'flieger2' ist im aktuellen Kontext nicht vorhanden.
Der Name 'flieger2' ist im aktuellen Kontext nicht vorhanden.
Der Name 'flieger1' ist im aktuellen Kontext nicht vorhanden.
Der Name 'flieger1' ist im aktuellen Kontext nicht vorhanden.
Der Name 'flieger1' ist im aktuellen Kontext nicht vorhanden.

Seht ihr da einen Fehler, habs 1:1 aus dem Buch abgeschrieben und kann mir da keinen Reim drauf machen.


Th69 - Di 21.03.17 12:35

Hallo,

die drei Variablen sind ja nur lokal innerhalb der Methode ObjectMethoden definiert!
Diese müssen dann als Member der Klasse Uebung definiert werden (noch besser gleich als Eigenschaften) und beim Zugriff mußt du dann auch die Uebung-Referenz angeben:

C#-Quelltext
1:
ue.flieger1.Equals(ue.flieger2);                    


Oder aber gleich die Tests in die Methode ObjectMethoden mit dazu packen.

Dies scheint jetzt für dich ein guter Zeitpunkt zu sein, dich auch mit Unit-Tests auseinander zu setzen: [Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio [http://www.mycsharp.de/wbb2/thread.php?threadid=110202]