Laden...

Was bedeutet die Warnung CS0252?

Erstellt von MMazi vor 3 Jahren Letzter Beitrag vor 3 Jahren 643 Views
M
MMazi Themenstarter:in
45 Beiträge seit 2020
vor 3 Jahren
Was bedeutet die Warnung CS0252?

Hi
Ich habe diese Codezeile Fehler:> Fehlermeldung:

Warnung CS0252 Möglicher unbeabsichtigter Referenzvergleich; Um einen Wertevergleich zu erhalten, geben Sie auf der linken Seite 'string' ein.


private void btnStart_Click(object sender, RoutedEventArgs e)

        {
          // hier kommt die Fehlermeldung
            if (btnStart.Content == "Start")
            {
               _currentTimer = new Timer();
                txtStart.Text = _currentTimer.Start.ToString("HH:mm:ss");
                btnStart.Content = "Ende";
            }
            else
            {  

                DateTime Ende = new DateTime(2020, 11, 10, 0, 0, 0);
                _currentTimer.Ende = DateTime.Now;
                _currentTimer.Dauer = _currentTimer.Ende - _currentTimer.Start;
                txtEnde.Text = _currentTimer.Ende.ToString("HH:mm:ss");
                Timer.Add(_currentTimer);


                //private void btnEnde_Click(object sender, RoutedEventArgs e)
                //{
            }

            foreach (Control tbx in Controls)
            {
                if (tbx.GetType() == typeof(TextBox))
                {
                    ((TextBox)tbx).Clear();
                }
            }
            btnStart.Content = "Start";
        }

wäre ich dankbar für die Antworten

W
955 Beiträge seit 2010
vor 3 Jahren

Content ist object?
Compiler Warning (level 2) CS0252

M
MMazi Themenstarter:in
45 Beiträge seit 2020
vor 3 Jahren

Content ist der Text ,der Name von Button in WPF halt

<Button
                x:Name="btnStart"
                Grid.Column="0"
                Width="100"
                Height="20"
                Margin="5,5,5,5"
                Click="btnStart_Click"
                Content="Start" />
D
261 Beiträge seit 2015
vor 3 Jahren
C
2.121 Beiträge seit 2010
vor 3 Jahren

Der Vergleich von zwei Objektvariablen ergibt, ob beide Variablen auf das selbe Objekt zeigen.
Bei einem String will man aber in der Regel nicht wissen ob zwei Stringvariablen auf das selbe Stringobjekt zeigen, sondern ob die Strings vom Inhalt her gleich sind. Der Vergleich von Strings ist daher überschrieben und vergleicht den String Inhalt.

Bildlich: Du hast zwei verschiedene Zettel, also verschiedene Objekte. Auf beiden steht der gleiche Text.
Der Objektvergleich ergibt "sind nicht gleich", denn es sind zwei separate Zettel.
Der Textvergleich ergibt "ist gleich", denn es ist der selbe Text.

Für deinen Vergleich ist das sehr wichtig, denn bisher vergleichst du das Objekt btnStart.Content das selbe Objekt ist wie der String "Start". Das dürfte nicht der Fall sein.
Was du stattdessen wissen willst ist, ob in btnStart.Content der Text "Start" steht.

Die Warnung zeigt an, dass du an dieser Stelle etwas tust, was du eventuell nicht so haben willst.