myString.ToInt32() geht nicht

Hallo,
arbeite gerade ein Tutorial von C# durch.
In einem Beispiel steht da, dass man alternativ zu Int32.Parse(myString) auch direkt auf die Methode der Instanz myString zugreifen kann;
int i = myString.ToInt32();

Das scheint bei mir (Visual Studio 2005 und 2008) nicht zu funktionieren.
Von dem Objekt myString werden mir nur die Methoden
ToCharArray, ToLower, ToLowerInvariant, ToString, ToUpper und ToUpperInvariant angeboten.

Schreibe ich .ToInt32() kommt der Fehler: ‚myString does not contain a definition ‚ToInt32‘ and no extension method ‚ToInt32()‘ accepting a first argument …‘

Und manuell eine Instanz von der Klasse string kann ich auch nicht erstellen:
string myString = new string();
char* test = null;
string myString = new string(test);

Was mache ich falsch?

Hallo!
Damit Du vom Objekt „myString“ eine Methode „ToInt32()“ aufrufen kannst, muss die Klasse, von der „myString“ eine INstanz ist, diese Methode auch haben.
„System.String“ hat diese Methode nicht, daher die Meldung, die Du bekommst.
Also solltest Du überprüfen, welchen Typ „myString“ denn in diesem Zusammenhang hat. „System.String“ kann es nicht sein.
Etliche andere Klassen haben tatsächlich eine „ToInt32()“-Methode, z.B. Char oder IntPtr. Das, was Du aber anscheinend machen willst, ist keine Typkonvertierung (wie sie ToInt32 üblicherweise macht), sondern das Parsing einer Zeichenkette, um eine in einem bestimmten Format darin stehende Zahl zu ermitteln. Und das geht nunmal nur mit den entsprechenden Parse()/TryParse()-Methoden der numerischen Typen.

Mit den in der Compilermeldung erwähnten „extension methods“ könnte man zwar einer vorgegebenen Klasse noch weitere Instanzmethoden hinzufügen, aber nachdem das ein recht fortgeschrittenes Thema ist, bin ich ziemlich sicher, dass das nicht gemeint sein dürfte.

Gruß,
Martin

Okay danke.

Dann ist das Tutorial fehlerhaft.
Da steht drin, dass man alternativ zu Int32.Parse() auch myString.ToInt32() schreiben kann.

Beispiel:
string mystring;

mystring = Console.ReadLine();
Console.WriteLine(Int32.Parse(mystring));
Console.WriteLine(mystring.ToInt32());

Hi nochmal!

Wenn das genau so dort drin steht, dann ist das so totaler Quatsch.
Vielleicht solltest Du Dich dann nach einem anderen Tutorial umsehen…

Gruß,
Martin

Das scheint bei mir (Visual Studio 2005 und 2008) nicht zu
funktionieren.
Von dem Objekt myString werden mir nur die Methoden
ToCharArray, ToLower, ToLowerInvariant, ToString, ToUpper und
ToUpperInvariant angeboten.

Schreibe ich .ToInt32() kommt der Fehler: ‚myString does not
contain a definition ‚ToInt32‘ and no extension method
‚ToInt32()‘ accepting a first argument …‘

Und manuell eine Instanz von der Klasse string kann ich auch
nicht erstellen:
string myString = new string();
char* test = null;
string myString = new string(test);

Was mache ich falsch?

Du gehst das ganze falsch an. Wen du einen String in einen Integer umwandeln willst machst du ungefähr das so:

Convert.ToInt32(string);

Gruß Bytestorm