Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel Hinweise zu VB.NET
  gp 3.1 Eine Testumgebung
  gp 3.2 Variablen
    gp 3.2.1 Bezeichner
    gp 3.2.2 VB.NET-Datentypen
  gp 3.3 Konstanten
  gp 3.4 Typkonvertierungen
  gp 3.5 Kontrollstrukturen
    gp 3.5.1 Entscheidungen mit If
    gp 3.5.2 Select Case
    gp 3.5.3 Zählschleife mit For Next
    gp 3.5.4 Schleife mit Do Loop
    gp 3.5.5 Schleife mit While
  gp 3.6 Funktionen und Prozeduren
    gp 3.6.1 Aufbau
    gp 3.6.2 Übergabe von Parametern
  gp 3.7 Klassen erstellen
    gp 3.7.1 Eigenschaften einer Klasse über Felder realisieren
    gp 3.7.2 Eigenschaften mit Property-Prozeduren realisieren
    gp 3.7.3 Schreibgeschützte Eigenschaften
    gp 3.7.4 Methoden erstellen
    gp 3.7.5 Konstruktor erstellen
    gp 3.7.6 Klassen vererben
  gp 3.8 Mit Objekten arbeiten
    gp 3.8.1 Objekte vergleichen
    gp 3.8.2 Den Typ eines Objekts bestimmen
    gp 3.8.3 Objekte in andere Klassen konvertieren
  gp 3.9 Arbeiten mit Arrays
  gp 3.10 Dateizugriffe
  gp 3.11 Fehlerbehandlung mit Try ... Catch ... Finally ... End Try


Galileo Computing

3.8 Mit Objekten arbeiten  downtop


Galileo Computing

3.8.1 Objekte vergleichen  downtop

Mit dem Is-Operator stellen Sie fest, ob zwei Objekte miteinander identisch sind. Genauer gesagt werden mit dem Is-Operator nicht zwei Objekte miteinander verglichen, sondern zwei Referenzen. Zeigen beide Variablen an die gleiche Stelle im Arbeitsspeicher? Das ist die Frage, die der Is-Operator überprüft. Die folgende Codesequenz verdeutlicht die Arbeitsweise.

Dim s As String
Dim a As CBackware = New CBackware()
Dim b As CBackware
a.Name = "Brot"
b = a    
If a Is b Then
   s = "a ist gleich b." ' Ja, a ist gleich b.
Else 
   s = "a ist nicht gleich b."
End If   
s = b.Name            ' Brot 
a.Name = "Brötchen"
s = b.Name            ' jetzt: Brötchen 
ausgabe.innerHTML = s

Die Identität von a und b wird insbesondere durch die Anweisungen am Schluss deutlich. a.Name = "Brötchen" verändert gleichzeitig die Eigenschaft von a und von b, weil a und b auf das gleiche Objekt zeigen. Anschließend enthält auch b.Name die Bezeichnung "Brötchen".

Einen Vergleich können Sie auch mit der Methode Equals erreichen, die das Stammobjekt Object automatisch an alle Klassen vererbt:

If a.Equals(b) Then ...

Galileo Computing

3.8.2 Den Typ eines Objekts bestimmen  downtop

Mit dem Operator TypeOf können Sie den Typ einer Variablen bestimmen.

Dim a As CBackware = New CBackware()       
If TypeOf a Is CBackware Then
   s = "a ist eine Backware"  ' trifft zu
Else 
   s = "a ist keine Backware"
End If

Auch folgender Vergleich trifft zu:

If TypeOf a Is Object Then  ' trifft zu

Ein TypeOf-Vergleich trifft auf alle Klassen zu, die in der Hierarchie des fraglichen Objekts auftauchen. Wenn es eine Klasse CBrot gäbe, die von CBackware vererbt wäre, dann würde diese Abfrage ebenfalls zutreffen:

Dim a As CBrot = New CBrot() 
If TypeOf a Is CBackware Then ' trifft zu, wenn CBrot
                              ' von CBackware abstammt.

Galileo Computing

3.8.3 Objekte in andere Klassen konvertieren  toptop

Ein Objekt, das Instanz einer speziellen Klasse ist, können Sie stets auch als Instanz einer allgemeineren Klasse ansprechen, von der die spezielle Klasse abgeleitet ist. Die beiden folgenden Prozeduren in vb_09.aspx verdeutlichen die Vorgehensweise. Der Funktion malsehen kann ein beliebiges Objekt übergeben werden. Die Funktion malsehen überprüft, ob das übergebene Objekt vom Typ CBackware ist. In diesem Fall kann sie die Eigenschaft Name ausgeben. Sonst wird eine Information zum übergebenen Objekt mit toString ausgegeben.

Die aufrufende Prozedur Page_Load übergibt testweise mehrere Objekte. Zunächst eine Instanz von CBackware, dann eine Integer-Variable und dann eine Instanz von System.Object. Bei CBackware ruft malsehen korrekt die Eigenschaft Name ab, nachdem die Variable mit CType in ein Objekt vom Typ CBackware umgewandelt wurde.

malsehen = CType(x, CBackware).Name

Bei den beiden anderen Objekten ruft malsehen toString auf. Im Falle der Integer-Variablen führt toString dazu, dass die Zahl ausgegeben wird. Im Falle der System.Object-Variablen wird der Name der Klasse ausgegeben.

Sub Page_Load (ByVal Sender As Object, _
               ByVal E As EventArgs)
   Dim s As String
   Dim a As CBackware = New CBackware()
   a.Name = "Brötchen"          
   If TypeOf a Is CBackware Then
      s = "a ist eine Backware"
   Else 
      s = "a ist keine Backware"
   End If       
   s &= "<br>" & malsehen(a) ' Brötchen   
   Dim i As Integer = 5
   s &= "<br>" & malsehen(i) ' 5   
   Dim k As Object = New Object
   s &= "<br>" & malsehen(k)  ' System.Object
   ausgabe.innerHTML = s                     
End Sub

Public Function malsehen (ByVal x As Object) As String
   If TypeOf (x) Is CBackware Then
      malsehen = CType(x, CBackware).Name
   Else
      malsehen = x.toString
   End If
End Function
Class CBackware
   Public Name As String   
End Class

Das Beispiel ist für die ASP.NET-Programmierung nicht untypisch. Tatsächlich erhalten alle Ereignisprozeduren einen solchen Object-Parameter, den Sie gelegentlich erst in die speziellere Klasse zurückverwandeln müssen, bevor Sie gezielt damit arbeiten können. Auch Page_Load macht da keine Ausnahme. Der erste Parameter ByVal Sender As Object ist genau ein solches Objekt. Im Falle von Page_Load kann man aus dem Sender-Objekt nur wenig Nutzen ziehen. Interessanter wird es, wenn beispielweise eine Schaltfläche ein Click-Ereignis auslöst. Auch der Ereignisprozedur für das Click-Ereignis wird die auslösende Schaltfläche als Object-Variable übergeben, die Sie innerhalb des Codes in eine speziellere Klasse, etwa Button, zurückverwandeln können. Darüber können Sie Details über die auslösende Schaltfläche in Erfahrung bringen. Im Laufe des Buches wird dieser Fall gelegentlich demonstriert werden.

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de