2016-04-15 7 views
1

私はvb.netを使い慣れていて、まだたくさんのことを学んでいます。これはうまくいくが、もっと簡単な方法があると確信している。誰かが私を正しい方向に向けることができますか?ありがとう。エラーをキャッチしながら値をあるタイプから別のタイプに変換する機能

Public Function GetValue(passVal As Object, valType As Type, errorVal As Object) As Object 
    Try 
     Select Case valType 
      Case GetType(String) 
       Return CType(passVal, String) 
      Case GetType(Date) 
       Return CType(passVal, Date) 
      Case GetType(Decimal) 
       Return CType(passVal, Decimal) 
      Case GetType(Integer) 
       Return CType(passVal, Integer) 
      Case GetType(Boolean) 
       Return CType(passVal, Boolean) 
      Case Else 
       MsgBox("Type Not Recognized") 
       Return errorVal 
     End Select 
    Catch ex As Exception 
     Return errorVal 
    End Try 
End Function 
+0

文字列としてのvalを暗く?戻り値の型は 'As Object'なので、コードが返すものはボックス化されます。ここからthie上流への簡単な方法があります。 – Plutonix

+0

私はそれをもう一度。あなたが質問しているときにはイライラしていて、あなたがやろうとしていることをしないことを人々がお勧めするのではなく、しかし、あなたが学んでいるので、それを離れる方が良いです。そのトリックは、オブジェクトの種類がわかっていて、オブジェクトを検査する必要がないように、コードを記述することです。基本的には、99.9%の時間で、 'object'を引数とする関数を必要としません。 –

+0

$ .02 VB.NETを5年以上かけて書いた人から:もし可能であれば、C#に切り替えてください。 C#にはコードサンプルがいくつかありますが、書くのが簡単になります。そして、{中括弧}やセミコロンに慣れてしまうと、JavaScriptのような他の言語が突然簡単になります。私は約3年前に切り替えましたが、早くやりたいと思っています。 –

答えて

1

単純に汎用型関数を使用して実装できます。汎用関数は言語の強力な機能であり、このような場合に適しています。

例:

Function GetValue(Of T)(value As Object, defaultValue As Object) As T 
    Try 
     Return CTypeDynamic(Of T)(value) 
    Catch ex As Exception 
     Return defaultValue 
    End Try 
End Function 

とそれを使用する: あなたがこれをどのように使用します(文字列の)=のgetValue(10、 "")

+0

素晴らしいです、ありがとうございます! – bdbcse

+0

@bdbcseよろしくお願いします。私は助けることができてうれしい! 「受け入れられる」と印を付けることによって正解を示すと考える。このページを訪れたときに他の人が自分の答えを見つけるのに役立ちます。 –

0

あなたはそうのように、変換方法を試すことができます: をiは整数= Convert.ToInt32( "45") 'としてこれが45

を返します

点心(整数への文字列のために)

double、decimal、dateTime(date)、int16、int64などでも動作します。 基本的にほとんどのデータ型。

関連する問題