4

次のASP.NET(VB)コードがあります。

    strLocation = CStr(q1("LocationName")) + " " + CStr(q1("LocationAddress")) + " " + CStr(q1("LocationCity"))

LocationCityがnullの場合:

タイプ'DBNull'からタイプ'String'への変換が無効です。

これを修正する方法はありますか?

それがLocationCityだけだったとしたら、私はおそらく次のようなことをするでしょう。

    If IsDBNull(q1("LocationCity")) Then
        strLocation = ""
    Else
        strLocation = CStr(q1("LocationCity"))
    End If

私も試しました:

    strLocation = If(CStr(q1("LocationName")), "") + " " + If(CStr(q1("LocationAddress")), "") + " " + If(CStr(q1("LocationCity")), "")

しかし、同じ結果が得られました

C#では通常使用しますか?しかし、ASP.NETVBでの最善のアプローチはわかりません

4

2 に答える 2

10

??VB.NETのC#に相当するのはIF演算子です

strLocation = If(IsDBNull(q1("LocationCity")), "", CStr(q1("LocationCity")))

IIF関数は非推奨であり、短絡をサポートしておらず、タイプセーフではないため、使用しないでください。

C#に相当するVB.NETはありますか??も参照してください。オペレーター?関連情報について

于 2012-08-06T15:24:08.280 に答える
2

あなたが使うことができますIf(IsDBNull(q1("propertyName")), "", CStr(q1("propertyName")))

または、メソッドとして示したコードブロックを実装し、プロパティごとにそのメソッドを呼び出すこともできます。IMO、3つのIIFステートメントを使用するよりもコード行がはるかにクリーンになります

Function StringValue(q1 as Q1Type) as String
    If IsDBNull(q1("LocationCity")) Then   
        Return ""   
    Else   
        Return  CStr(q1("LocationCity"))   
    End If
End Function

strLocation = StringValue(q1("LocationName")) + " " + StringValue(q1("LocationAddress")) + " " + StringValue(q1("LocationCity"))
于 2012-08-06T15:20:53.070 に答える