Hi Oskar, Chris,

In VB werden die Indexer (fast) immer �ber eine Eigenschaft angesprochen. In
diesem Fall "Chars".

Dim strWhatEver As String = "help me"
Dim c As Char = strWhatEver.Chars(0)

Damit kann man auf jeden einzelnen Buchstaben des Strings zugreifen.


Aber das hat ja eher weniger mit der Ursprungsfrage zu tun (obwohl diese
vielleicht mit einem ungl�cklichen Beispiel daher kam *g*)?

> DirectCast (�C�c, Char)

DirectCast ist mit CType gut vergleichbar (auch wenn die beiden letztendlich
nur wenig gemein haben). Wenn DirectCast verwendet werden kann, dann sollte
es aus Performancegr�nden auch verwendet werden.

Aber vorher noch zur Erkl�rung:
Der Zusatz c hinter der Zeichenfolge gilt nur f�r einstellige Zeichenfolgen
und gibt an, dass es sich hierbei um Char statt um String handelt (ich hasse
diese Notation. Wer zum T... ist nur auf so eine Sche... gekommen *grrr*).
Jedenfalls hast Du damit schon die Umwandlung vorgenommen (Dim x As Char =
"C"c ist somit g�ltig).

Also willst Du mit dieser Zeile ein Char als Char ansprechen - was ja an
sich quatsch ist ;). Grunds�tzlich funktioniert das auch - nur ist es eben
so, das Werttypen nicht gewandelt werden k�nnen (weil dazu zwingend eine
Konvertierung n�tig ist - es sei denn man bleibt beim gleichen Datentyp was
aber Quatsch ist *g*).

Konvertieren (also Umwandlen des Objekts) kann DirectCast n�mlich gar nicht
(das macht dann CType, weswegen CType auch etwas langsamer ist). DirectCast
wechselt nur den Typ, mit dem ein Objekt angesprochen wird. Daher erwartet
DirectCast auch, dass das zu konvertierende Objekt den gleichen Laufzeittyp
hat, wie der Zieltyp.
D.h. zwischen abgeleiteten Klassen und implementierte Schnittstellen kannst
Du mit DirectCast hin- und herwechseln wie Du Lustig bist(siehe unten).
Muss es eine Konvertierung von einem Typ in den anderen sein, dann muss
CType ran (geht nat�rlich nur, wenn eine Konvertierung m�glich ist).



        Class test
                Inherits MyBaseClass
                Implements IDisposable
                Implements IComparable
        End Class

        Dim x As New test

        Dim t1 As MyBaseClass = DirectCast(x, MyBaseClass)
        Dim t2 As IDisposeable = DirectCast(x, IDisposeable)
        Dim t3 As ICompareable = DirectCast(x, ICompareable)

        'und zur�cl
        Dim z1 As test = DirectCast(t1, test) 
        Dim z2 As test = DirectCast(t2, test) 
        Dim z3 As test = DirectCast(t3, test)



Viele Gr��e, Wolfgang
http://www.vbwelt.de/



> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im
> Auftrag von Christoph Wille
> Gesendet: Donnerstag, 10. Juni 2004 17:14
> An: [EMAIL PROTECTED]
> Betreff: Re: AW: [Vb.net] Directcast
> 
> At 04:21 PM 6/10/2004, you wrote:
> > >Und wie w�r's mit dem Indexer der Stringklasse?
> >
> >mmh, Indexer? Sorry, hab ne L�cke in meinem bisherigen VB.NET-Wissen
> >(welche doch noch sehr gross ist :)), aber was genau meinst du damit?
> 
> C# Syntax:
> 
> string strWhatEver = "help me";
> char c = strWhatEver[0];
> 
> Chris



_______________________________________________
Vb.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/vb.net

Odpovedet emailem