Frage

Nun, als C # Programmierer, ich weiß, dass Generika sind genial. Wenn jedoch in einigen VB.NET Dilettantismus, entdeckte ich, dass die folgenden nicht einen Compiler-Fehler verursacht:

Dim instance As List(Of Integer)
instance.Add(True)

Warum ist das? Ich weiß, dass Sie nicht in VB.NET zu werfen sind erforderlich, aber ich hätte gedacht, dass dies der Hauptgrund tötet verwenden Generika -. Sicherheitstyp

Edit: Ich habe keine Option streng auf, da dies nicht Übung eine wirkliche Programmierung war, mir nur einen Blick auf VB.NET in der Theorie haben. Es ist eine theoretische Frage, wie ich es erwartet hatte einen Compiler-Fehler zu verursachen, selbst mit der Option streng aus, nur als ein Merkmal von generischen Typen.

War es hilfreich?

Lösung

Ohne Option Strict On ist VB.NET glücklich Boolean implizit zu konvertieren Integer. Ich empfehlen (besonders Beobachtung von einem C # -Hintergrund), dass Sie Option Strict On die Standardeinstellung für Ihre VB.NET Arbeit zu machen.

Sie können dies in Visual Studio in Tools | Options | Projects and Solutions | VB Defaults.

Bearbeiten für mehr auf dem VB (klassisch) 'entspannt' Haltung zu geben Umwandlung, google 'Evil Typen Coercion'. Diejenigen von uns, die sich bemühten, gute Arbeit in VB zu tun (klassisch) hatte diesen Dämon für während ringen ...

Andere Tipps

Haben Sie bekam Option Strict gedreht auf?

VB.NET konvertiert bei Aufruf der Funktion Website. Die Liste (von Integer) speichert nach wie vor eine ganze Zahl (-1, die der ganzzahlige Wert True ist)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top