Autor Beitrag
avoid
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 230
Erhaltene Danke: 4

MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
BeitragVerfasst: Fr 20.07.12 14:55 
ich versuche gerade mit folgendem code einen string in einem dataset zu lokalisieren um die zeile zu löschen oder zu bearbeiten. der code funktioniert soweit, aber der Editor unterstreicht ihn grün und sagt ich soll die linke seite der if abfrage zu string convertieren. einen Convert.ToString() kann ich ja gerne machen, nur wüsste ich gerne wo mein syntaxfehler ist. hat da jemand eine idee?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            for (int x = 0; x < dataSet1.Tables["Tabelle"].Rows.Count; ++x)
            {
                if (dataSet1.Tables["Tabelle"].Rows[x]["Spalte"] == "Test")
                {
                    MessageBox.Show(dataSet1.Tables["Tabelle"].Rows[x]["Spalte"] + " steht in zeile " + x);
                }
            }


hier noch die genaue fehlermeldung:
Zitat:
Warnung 1 Unbeabsichtigter Verweisvergleich.
Wandeln Sie die linke Seite in den Typ "string" um, um einen Wertvergleich durchzuführen.


gruß, avoid

_________________
Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 20.07.12 15:19 
Der Ausdruck auf der linken Seite des ==-Operators ist vom Typ object, also überprüft == die beiden Objektreferenzen auf Gleichheit (object.ReferenceEquals). Bei Strings will man aber eher auf Inhaltsgleichheit prüfen, weshalb == für Strings überladen ist - allerdings müssen dafür auf beiden Seiten Strings stehen. Da das auf deiner rechten Seite schon der Fall ist, weist dich der Compiler darauf hin, dass du die linke Seite ebenfalls in einen String umwandeln solltest, damit tatsächlich der überladene Operator aufgerufen wird, was wohl auch deine Absicht war ;) .

PS: Statt Convert bitte, bitte einen normalen Cast verwenden: (string)foo

_________________
>λ=
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 20.07.12 15:24 
Zitat:
PS: Statt Convert bitte, bitte einen normalen Cast verwenden: (string)foo


... wenn denn in der Spalte ein string steht.
avoid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 230
Erhaltene Danke: 4

MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
BeitragVerfasst: Fr 20.07.12 15:37 
d.h. ich biege das so um und der editor ist zufrieden, die warscheinlichkeit das die anwendung ab schmiert wenn kein string an dieser stelle sein sollte ist aber noch die selbe.
doof :(

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
for (int x = 0; x < dataSet1.Tables["Tabelle"].Rows.Count; ++x)
            {
                string inhalt = dataSet1.Tables["Tabelle"].Rows[x]["Spalte"].ToString();
                if (inhalt == "Test")
                {
                    MessageBox.Show(dataSet1.Tables["Tabelle"].Rows[x]["Spalte"] + " steht in zeile " + x);
                }
            }


naja falsche eingaben muß ich ja so oder so abfangen, wird schon klappen. ;)
danke für die info!

_________________
Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke