"Zeichenkette" vs. "Zeichenkette" in Quicktip über IsNullOrWhiteSpace ()

8

Wenn ich in Visual Studio 2015 arbeite, habe ich eine bedingte Überprüfung mit folgendem Effekt:

%Vor%

Und ich habe einen IDE001 Quick Tip oder eine Aktion gesehen, der darauf hinweist, dass der Name vereinfacht werden kann "mit einer vorgeschlagenen Korrektur von:

%Vor%

Mit dem einzigen Unterschied, string anstelle von String zu verwenden.

MSDN-Beispiele verwenden einen Großbuchstaben S mit String und diese SO-Antwort verdeutlicht, dass " string " ein Alias ​​in C # für System.String ist. Also technisch gibt es keinen Unterschied. "

Und um klar zu sein, meine Frage beruht auf den Antworten innerhalb von String vs. String , aber ich habe eine andere Frage als was dort gefragt wird.

Auch verwandt ist diese SO-Frage , obwohl die Antworten dort nicht wirklich auf die Frage eingehen. Diese spezielle Frage ist meiner sehr ähnlich, jedoch ist sie als Duplikat der anderen SO-Frage gekennzeichnet, die ich notiert habe. Und gibt es einen Kommentar vom OP Dies ist ein brandneues Verhalten, das erst 2015 zu sehen ist.

Meine Frage

Meine Frage ist, dass, wenn die beiden Variablentypen äquivalent sind und MS-Beispiele die Großbuchstabenversion verwenden, warum sehe ich schnelle Aktionen, um die Kleinschreibung zu verwenden? Gab es eine Änderung in der .NET 4.6 Framework und VS2015, um die Verwendung der Kleinschreibung zu fördern? Es scheint nicht so, als würde ich diese Art von Trinkgeld sehen.

    
GlenH7 04.01.2016, 18:59
quelle

4 Antworten

3

Ich spekuliere nur, aber es scheint mir, dass der Quicktip Ihnen dabei helfen soll, System.String bis string zu vereinfachen, ohne die Tatsache zu beachten, dass Ihre using s es zumindest in Bezug auf Zeichen zählen.

Nennen Sie es einen Fehler (wenn auch ein extrem kleiner) oder zumindest die IDE wird übereifrig. Ein könnte argumentieren, dass dies eine gültige Vereinfachung im weiteren Sinne ist, insbesondere wenn Sie diese kurzen "Aliase" konsequent in Ihrem Code verwenden. Als C ++ Entwickler sehe ich das nicht wirklich, aber da gehts.

    
quelle
2

Nun, so schlauer als ich bemerkt habe, gibt es eigentlich keinen Unterschied in der Kompilierungsebene und wie Sie (und wie JohnyL, wie Sie sehen werden;), dachte ich auch, dass es ein Fehler ist und was mich zu meiner Antwort führt :

  

Warum sehe ich schnelle Aktionen, um die Kleinschreibung zu verwenden?

Entnommen aus diese informative (und lustige) Bug-Diskussion, das sind die wichtigsten Punkte für dieses Feature:

  • Es ändert nicht nur den Groß- / Kleinbuchstaben, sondern ersetzt den String -Typnamen durch das string -Schlüsselwort. Die Tatsache, dass sich die 2 nur zufällig unterscheiden, ist ein Zufall. Es gibt Fälle, in denen die Anzahl der Zeichen unterschiedlich ist ( Int32 -> int ) oder der Name völlig anders ist ( Single -> float ).
  • Kleinbuchstaben sind einfacher zu tippen.
  • Für Personen, die das konsistente Format von string im Code bevorzugen (es hängt wahrscheinlich von anderen Sprachen ab, in denen Sie codieren und deren Konventionen), hilft diese Funktion, den vorhandenen Quellcode zu ändern.
  • string ist auch ein Schlüsselwort mit einer gut definierten Bedeutung, während die Bedeutung von String je nach Kontext unterschiedlich sein kann.
  

Gab es eine Änderung in .NET 4.6 Framework und VS2015, um die Verwendung der Kleinschreibung zu fördern?

Soweit ich gelesen habe, Nein.

Übrigens können Sie dieses Verhalten in Tools & gt; Optionen & gt; Texteditor & gt; C # & gt; Codestil - & gt; Deaktivieren Sie das Kontrollkästchen "Intrinsic vordefinierten Typ Schlüsselwort in Memberzugriffsausdrücken bevorzugen".

    
Moshisho 19.01.2016 09:51
quelle
1

Es gibt keinen Unterschied für den Compiler, aber IDE-Schnellkorrekturen werden auch verwendet, um ein gutes Styling sicherzustellen (z. B. Namenskonventionen). Sie programmieren in C #, so dass Sie seine Funktionen verwenden müssen (in diesem Fall - bultin type alias).

Ich denke, Sie verwenden int anstelle von Int32 , oder? Das gleiche gilt für string und String . Obwohl es für string technisch keinen wirklichen Längenunterschied gibt, ist das immer noch ähnlich.

    
Vlad 04.01.2016 20:28
quelle
0

Ich habe den Verdacht, dass der Hauptgrund für das Ändern von System.String in string darin liegt, dass es als primitives .NET betrachtet wird. Und da alle Primitive Aliase haben - System.Int32 - & gt; int , System.Char - & gt; char usw., aus Gründen der Konsistenz wird "string" gleich behandelt. Wenn Sie alle anderen MSDN-Dokumentationen durchsehen, werden Sie beide austauschbar finden. Ich denke, das ist ein einfaches Versehen ihrer Seite.

Ob es gerechtfertigt ist oder nicht, ich werde immer noch string über String verwenden, wie die Quick Tips vorschlagen. Klingt wie ein Beispiel für Omas Cooking Secret, aber gibt es einen Grund, dieses Verhalten in diesem Fall zu ändern?

    
Balah 04.01.2016 20:19
quelle

Tags und Links