1

CIntorを使用するたびにこのようなことをしなければならないのは好きではありませんInteger.Parse(コストがかかることに気づきました):

Try
  someIntVariable = CInt(someStringVariable)
Catch ex As Exception
  someIntVariable = 0
End Try

また、関連するすべてのコード行が好きではありませんInteger.TryParse。次のような関数を作成できると思います。

Function ToInteger(str As String) As Integer
  Dim number As Integer
  Int32.TryParse(str, number)
  Return number
End Function

しかし、拡張メソッドまたは .NET に組み込まれた何かが既にありませんNullable(Of T).GetValueOrDefaultか?

4

4 に答える 4

7

正直なところInteger.TryParse、行く方法ですが、構文が気に入らない場合は、いつでも拡張メソッドの背後に隠すことができます。

Public Module IntegerExtensions
    <Extension()> _
    Public Function AsIntOrDefault(ByVal valueToParse As String, Optional ByVal defaultValue As Integer = 0) As Integer
        Dim retVal As Integer = 0

        If Not Integer.TryParse(valueToParse, retVal) Then
            retVal = defaultValue
        End If

        Return retVal
    End Function
End Module

次に、次のように使用できます。

Public Class Foo
    Public Sub Blah()
        Dim value1 As Integer = "IWillNotParse".AsIntOrDefault() 'Should be 0
        Dim value2 As Integer = "IWillNotParse".AsIntOrDefault(5) 'Should be 5
        Dim value3 As Integer = "123".AsIntOrDefault() 'Should be 123
    End Sub
End Class
于 2013-05-10T15:09:52.637 に答える
1

多分これはあなたのために働くかもしれません..

Function ToInteger(str As String) As Integer
    Dim number As Integer
    If IsNumeric(str) Then
        number = CInt(str)
    Else
        number = 0
    End If
    Return number
End Function
于 2013-05-10T15:47:41.083 に答える