Bug or Feature

  • C#

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Bug or Feature

    Moin Leute,
    gestern ist mir beim Studio 2019 im Gegensatz zu früheren Studios folgendes aufgefallen:
    Wenn in einer Struktur im .ToString() geschweifte Klammern angezeigt werden sollen,
    werden diese beim HOver und bei der Anzeige in im Überwachungsfenster nicht mehr aufgelöst.
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Windows.Forms;
    3. namespace WindowsFormsApplication1
    4. {
    5. public partial class Form1 : Form
    6. {
    7. internal struct MyStruct
    8. {
    9. public int Value1;
    10. public int Value2;
    11. public MyStruct(int first, int last) : this()
    12. {
    13. this.Value1 = first;
    14. this.Value2 = last;
    15. }
    16. public override string ToString()
    17. {
    18. return string.Format("{{{0} = {1} {2} = {3}}}", nameof(this.Value1), this.Value1, nameof(this.Value2), this.Value2);
    19. }
    20. }
    21. public Form1()
    22. {
    23. this.InitializeComponent();
    24. this.TopMost = true;
    25. }
    26. private void Button1_Click(object sender, EventArgs e)
    27. {
    28. MyStruct values = new MyStruct(-1, 42);
    29. // hier einen Haltepunkt drauf setzen
    30. this.label1.Text = string.Format("{{{0} = {1} {2} = {3}}}", nameof(values.Value1), values.Value1, nameof(values.Value2), values.Value2);
    31. this.label2.Text = values.ToString();
    32. }
    33. }
    34. }

    Ist das nun ein Fehler oder soll das zur Beschleunigung der Debug-Anzeige führen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mein VS17 auf dem W10-Laptop spinnt momentan, nach dem Laden des oder Anlegen eines neuen Projekts wird das Studio rausgeworfen.
    Auf meiner W7-VS2010-Maschine auf Arbeit ist das anders, ich hab das gestern miteinander verglichen, hab es leider nicht fotografiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Ah, jetzt verstehe ich's. Du willst 1× {} haben, aber nicht 2×. Bei mir sieht es genauso aus, wie bei dir.
    Über MyStruct values = new MyStruct(-1, 42); hovern ergibt in der Vorschau {{Value1 = -1 Value2 = 42}}
    Im Label steht (wie gewünscht) "{Value1 = -1 Value2 = 42}"

    Ich werde meinen ersten Post melden.

    Microsoft Visual Studio Community 2019
    Version 16.11.7
    Bilder
    • Screenshot 2021-12-11 121035.png

      1,99 kB, 206×166, 171 mal angesehen
    • Vollbildaufzeichnung 11.12.2021 121212.jpg

      53,29 kB, 1.194×229, 66 mal angesehen
    • Vollbildaufzeichnung 11.12.2021 121215.jpg

      35,97 kB, 723×162, 47 mal angesehen
    @Bartosz Danke.
    ====
    @All:
    Könnt Ihr das bitte mal auf anderen Studios (alle außer VS2019) testen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich mich recht erinnere war das auch bei früheren Versionen so.
    Die Werte im "Hover" und Überwachungsfenster werden maskiert dargestellt.

    Ist genauso bei Zeilenumbrüchen, Anführungszeichen und was weiß ich nicht noch genau so.

    Edit:
    Ach jetzt weiß ich was du meinst, glaube aber das war vorher auch schon so, das im Hover/Locals Fenster bei Objekten eine zusätzliche Klammer drumherum eingefügt wird.

    "\"{{ {0} = {1} {2} = {3} }}\"" zeigt das eigentlich ganz gut:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „slice“ ()

    Ausgabe in VS2022 (17.0.2) wie in VS2019
    Bilder
    • VS2022.png

      57,23 kB, 791×520, 52 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Es ist schon merkwürdig. Ich hab noch ein wenig expeerimentiert:
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Drawing;
    3. using System.Windows.Forms;
    4. namespace WindowsFormsApplication1
    5. {
    6. public partial class Form1 : Form
    7. {
    8. internal struct MyStruct
    9. {
    10. public int Value1;
    11. public int Value2;
    12. public MyStruct(int first, int last) : this()
    13. {
    14. this.Value1 = first;
    15. this.Value2 = last;
    16. }
    17. public override string ToString()
    18. {
    19. //return string.Format("{{{0} = {1} {2} = {3}}}", nameof(this.Value1), this.Value1, nameof(this.Value2), this.Value2);
    20. return string.Format("{0} = {1} {2} = {3}", nameof(this.Value1), this.Value1, nameof(this.Value2), this.Value2);
    21. }
    22. }
    23. internal struct MyStruct2
    24. {
    25. public string Text;
    26. public MyStruct2(string txt) : this()
    27. {
    28. this.Text = txt;
    29. }
    30. public override string ToString()
    31. {
    32. return this.Text;
    33. }
    34. }
    35. public Form1()
    36. {
    37. this.InitializeComponent();
    38. this.TopMost = true;
    39. }
    40. private void Button1_Click(object sender, EventArgs e)
    41. {
    42. MyStruct values = new MyStruct(-1, 42);
    43. Point pt = new Point(-1, 42);
    44. string txt = "aa bb cc";
    45. MyStruct2 ttt = new MyStruct2(txt);
    46. //this.label1.Text = string.Format("{{{0} = {1} {2} = {3}}}", nameof(values.Value1), values.Value1, nameof(values.Value2), values.Value2);
    47. this.label1.Text = string.Format("{{{0} - {1}}}", values, pt);
    48. this.label2.Text = values.ToString();
    49. this.label3.Text = pt.ToString();
    50. this.label4.Text = txt;
    51. this.label5.Text = ttt.ToString();
    52. }
    53. }
    54. }

    Möglicherweise werden vom Framework um die Schnell-Ausgabe eigener Strukturen / Klassen geschweifte Klammern gelegt.
    Um Framework-eigene Ausgaben jedoch nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!