121 votes

Fonctions cachées de VB.NET ?

J'ai appris beaucoup de choses en parcourant Caractéristiques cachées de C# et j'ai été surpris de ne pas pouvoir trouver quelque chose similaire pour VB.NET.

Quelles sont donc ses caractéristiques cachées ou moins connues ?

128voto

torial Points 9883

El Exception When est largement méconnue.

Considérez ceci :

Public Sub Login(host as string, user as String, password as string, _
                            Optional bRetry as Boolean = False)
Try
   ssh.Connect(host, user, password)
Catch ex as TimeoutException When Not bRetry
   ''//Try again, but only once.
   Login(host, user, password, True)
Catch ex as TimeoutException
   ''//Log exception
End Try
End Sub

82voto

Konrad Rudolph Points 231505

Personnalisé Enum s

L'une des véritables caché caractéristiques de VB est la completionlist balise de documentation XML qui peut être utilisée pour créer sa propre Enum -avec des fonctionnalités étendues. Cette fonctionnalité ne fonctionne pas en C#, cependant.

Un exemple tiré d'un de mes codes récents :

'
''' <completionlist cref="RuleTemplates"/>
Public Class Rule
    Private ReadOnly m_Expression As String
    Private ReadOnly m_Options As RegexOptions

    Public Sub New(ByVal expression As String)
        Me.New(expression, RegexOptions.None)
    End Sub

    Public Sub New(ByVal expression As String, ByVal options As RegexOptions)
        m_Expression = expression
        m_options = options
    End Sub

    Public ReadOnly Property Expression() As String
        Get
            Return m_Expression
        End Get
    End Property

    Public ReadOnly Property Options() As RegexOptions
        Get
            Return m_Options
        End Get
    End Property
End Class

Public NotInheritable Class RuleTemplates
    Public Shared ReadOnly Whitespace As New Rule("\s+")
    Public Shared ReadOnly Identifier As New Rule("\w+")
    Public Shared ReadOnly [String] As New Rule("""([^""]|"""")*""")
End Class

Maintenant, lorsque l'on assigne une valeur à une variable déclarée en tant que Rule l'IDE propose une liste IntelliSense de valeurs possibles parmi les suivantes RuleTemplates .

/EDIT :

Comme il s'agit d'une fonctionnalité qui repose sur l'IDE, il est difficile de montrer à quoi elle ressemble lorsque vous l'utilisez, mais je vais me contenter d'une capture d'écran :

Completion list in action

En fait, l'IntelliSense est 100% identique à ce que vous obtenez lorsque vous utilisez une Enum .

49voto

Parsa Points 509

Avez-vous remarqué l'opérateur de comparaison Like ?

Dim b As Boolean = "file.txt" Like "*.txt"

Plus de MSDN

Dim testCheck As Boolean

' The following statement returns True (does "F" satisfy "F"?)'
testCheck = "F" Like "F"

' The following statement returns False for Option Compare Binary'
'    and True for Option Compare Text (does "F" satisfy "f"?)'
testCheck = "F" Like "f"

' The following statement returns False (does "F" satisfy "FFF"?)'
testCheck = "F" Like "FFF"

' The following statement returns True (does "aBBBa" have an "a" at the'
'    beginning, an "a" at the end, and any number of characters in '
'    between?)'
testCheck = "aBBBa" Like "a*a"

' The following statement returns True (does "F" occur in the set of'
'    characters from "A" through "Z"?)'
testCheck = "F" Like "[A-Z]"

' The following statement returns False (does "F" NOT occur in the '
'    set of characters from "A" through "Z"?)'
testCheck = "F" Like "[!A-Z]"

' The following statement returns True (does "a2a" begin and end with'
'    an "a" and have any single-digit number in between?)'
testCheck = "a2a" Like "a#a"

' The following statement returns True (does "aM5b" begin with an "a",'
'    followed by any character from the set "L" through "P", followed'
'    by any single-digit number, and end with any character NOT in'
'    the character set "c" through "e"?)'
testCheck = "aM5b" Like "a[L-P]#[!c-e]"

' The following statement returns True (does "BAT123khg" begin with a'
'    "B", followed by any single character, followed by a "T", and end'
'    with zero or more characters of any type?)'
testCheck = "BAT123khg" Like "B?T*"

' The following statement returns False (does "CAT123khg" begin with'
'    a "B", followed by any single character, followed by a "T", and'
'    end with zero or more characters of any type?)'
testCheck = "CAT123khg" Like "B?T*"

48voto

Konrad Rudolph Points 231505

Typedefs

VB connaît un type primitif de typedef via Import alias :

Imports S = System.String

Dim x As S = "Hello"

Cette fonction est plus utile lorsqu'elle est utilisée en conjonction avec des types génériques :

Imports StringPair = System.Collections.Generic.KeyValuePair(Of String, String)

45voto

Nescio Points 12613

Oh ! et n'oubliez pas Littéraux XML .

Dim contact2 = _
        <contact>
          <name>Patrick Hines</name>
          <%= From p In phoneNumbers2 _
            Select <phone type=<%= p.Type %>><%= p.Number %></phone> _
          %>
        </contact>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X